Leetcode 213. 打家劫舍 II 动态规划

原题链接:Leetcode 213. 打家劫舍 II

cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        if (n == 1)
            return nums[0];
        if (n == 2)
            return max(nums[0], nums[1]);
        // 如果偷了第一家,就不能偷最后一家
        int dp[n - 1];
        dp[0] = nums[0];
        dp[1] = nums[0];
        for (int i = 2; i < n - 1; i++) {
            dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
        }
        // 如果从第二家开始偷,就没事
        int dp2[n];
        dp2[0] = 0;
        dp2[1] = nums[1];
        dp2[2] = max(nums[1], nums[2]);
        for (int i = 3; i < n; i++) {
            dp2[i] = max(dp2[i - 2] + nums[i], dp2[i - 1]);
        }
        return max(dp[n - 2], dp2[n - 1]);
    }
};
相关推荐
Halo_tjn1 分钟前
反射与设计模式2
java·开发语言·算法
_日拱一卒19 分钟前
LeetCode:46全排列
算法·leetcode·职场和发展
剑挑星河月32 分钟前
31.下一个排列
java·算法·leetcode
凌波粒36 分钟前
LeetCode--98.验证二叉搜索树(二叉树)
算法·leetcode·职场和发展
Misnearch41 分钟前
3635. 最早完成陆地和水上游乐设施的时间II
leetcode·贪心·排序
Kurisu5751 小时前
深度拆解:从令牌桶到滑动窗口,高并发系统限流算法的数学本质与边界
java·网络·算法
哈泽尔都1 小时前
运动控制教学——5分钟学会力控算法(阻抗/导纳/力位混合)
c++·python·算法·决策树·贪心算法·机器人·gpu算力
WWW65261 小时前
代码随想录 打卡第四十七天
数据结构·算法·leetcode
cpp_25011 小时前
P10722 [GESP202406 六级] 二叉树
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
smj2302_796826521 小时前
解决leetcode第3948题字典序最大的MEX数组
python·算法·leetcode