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];
    }
};
相关推荐
孞㐑¥34 分钟前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风39 分钟前
代码随想录第十五天
数据结构·算法·leetcode
XX風1 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT061 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂2 小时前
代码随想录day37动态规划part05
算法
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉
子春一2 小时前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
人道领域2 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
TracyCoder1233 小时前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode