LeetCode:83.打家劫舍

目录

1.打家劫舍


1.打家劫舍

我们设dp[i]表示偷到第i间屋子时的最高金额,可以分为以下两种情况:

  1. 第i间屋子不偷,所以i-1间屋子可以投偷,dp[i] = dp[i - 1]
  2. 第i间屋子偷,由于不能偷相邻的屋子,所以i - 1不能偷,但是i - 2可以,dp[i] = dp[i - 2] + nums[i]

综上所述:dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])

我们要注意初始值,dp[0]没有房子偷,所以dp[0] = 0, dp[1] 只能偷第一间,dp[1] = nums[0]

cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        vector<int> dp(n + 1);
        dp[0] = 0, dp[1] = nums[0];
        for(int i = 2; i <= n; i++)
            dp[i] = max(dp[i - 2] + nums[i - 1], dp[i - 1]);
        return dp[n];
    }
};
相关推荐
会员源码网3 小时前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing4 小时前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
HelloReader4 小时前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱7 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
qianpeng8978 小时前
水声匹配场定位原理及实验
算法
董董灿是个攻城狮20 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员1 天前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish1 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱1 天前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者2 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶