侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 213. 打家劫舍 II

Hope
2022-03-13 / 0 评论 / 0 点赞 / 316 阅读 / 428 字
温馨提示:
本文最后更新于 2022-03-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 213. 打家劫舍 II

思路:

动态规划,考虑两种情况,第一种是不选第一个,第二种是不选最后一个,最后取max。

代码:

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        if(!n) return  0;
        if(n == 1) return nums[0];
        vector<int> f(n + 1);//选i
        auto g = f;//不选i

        //先不选1号点
        //然后再计算选1号点不选n
        for(int i = 2 ;i <= n; i++){
            f[i] = g[i - 1] + nums[i - 1];
            g[i] = max(f[i - 1],g[i - 1]);
        }
        int res = max(g[n],f[n]);

        //第二种
        for(int i = 1;i <= n;i++){
            f[i] = g[i - 1] + nums[i - 1];
            g[i] = max(f[i - 1],g[i - 1]);
        }

        return max(res,g[n]);
    }
};
0

评论区