当前位置: 首页 > article >正文

LeetCode198:打家劫舍

题目链接:198. 打家劫舍 - 力扣(LeetCode)

代码如下

class Solution {
public:
    int rob(vector<int>& nums) {
        vector<int> dp(nums.size() + 1, 0);
        if(nums.size() == 1)  return nums[0];
        if(nums.size() == 2)  return max(nums[0], nums[1]);
        dp[0] = nums[0];
        dp[1] = max(nums[0], nums[1]);
        for(int i = 2; i < nums.size(); i++)
        {
            dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
        }
        return dp[nums.size() - 1];
    }
};

这个题目是一道经典的dp问题,首先我们先确定好dp[j]的含义,也就像题目所说的,dp是能够偷取的最大钱数,递推公式是dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);这个是我们只看最后一个,也就是最后一个物品偷还是不偷,如果偷的话,那就是dp[i - 2] + nums[i], 不偷的话,那就是dp[i - 1]之前的房间,这个不一定是倒数第二个,也可能是倒数第三个,第四个.......初始化,dp[0]毫无以为就是nums[0],dp[1]也就是我要选前两个之家最大的数。


http://www.kler.cn/a/349725.html

相关文章:

  • Vue.js组件开发-实现全屏平滑移动、自适应图片全屏滑动切换
  • Linux文件原生操作
  • C++:PTA L2-003 月饼
  • LCR 139.训练计划 I
  • 升级到Mac15.1后pod install报错
  • CMAKE工程编译好后自动把可执行文件传输到远程开发板
  • 下载Edge/Chrome浏览器主题的背景图片
  • EJB、JPA、JMS等Java EE核心组件
  • Apache StringUtils:专为Java字符串而生的工具类
  • 老人桌面 1.3.5|专为老人设计的便捷实用桌面应用
  • 51单片机快速入门之数码管的拓展应用2024/10/15
  • Spring 中的设计模式详解
  • 说下SSL/TLS四次握手过程?
  • 护眼台灯哪个牌子最好?市面上适合孩子使用的护眼台灯
  • 排序算法:从入门到精通,一文掌握Python排序精髓
  • 【Fargo】1:基于libuv的udp收发程序
  • C++类(2)
  • Linux系统——lvm逻辑卷
  • 阿里云云盘在卸载时关联到PHP进程,如何在不影响PHP进程情况下卸载磁盘
  • 基于SSM的微信小程序博客管理系统(博客1)
  • DW-大模型生图安全疫苗注入作业记录
  • 1. 安装框架
  • vue单页面 与多页面的区别
  • 无mac电脑在苹果开发者上传构建版本
  • C语言[经典题——4×5矩形阵]
  • 一文通透OpenAI o1:从CoT、Quiet-STaR、Self-Correct、Self-play RL、MCST等技术细节到工程复现