leetcode 198. 打家劫舍

2023.8.19

打劫问题是经典的动态规划问题。先设一个dp数组,dp[i]的含义为:前 i 个房屋能盗取的最高金额。 每间房屋无非就是偷,或者不偷这两种情况,于是可以写出递推公式: ​​​​​​​ dp[i] = max(dp[i-2]+nums[i-1] , dp[i-1]);

由递推公式发现需要初始化dp[0]和dp[1],初始化完之后再对房屋进行遍历赋值即可。附上我的草稿图以供参考:

​​​​​​​

代码如下:

cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        vector<int> dp(nums.size()+1);
        dp[0] = 0;
        dp[1] = nums[0];
        for(int i=2; i<=nums.size(); i++)
        {
            dp[i] = max(dp[i-2]+nums[i-1] , dp[i-1]);
        }
        return dp[nums.size()];
    }
};
相关推荐
whltaoin35 分钟前
贪心算法:部分背包问题深度解析
算法·贪心算法
不眠之夜44 分钟前
龟兔赛跑:快慢指针法详解(Floyd's Tortoise and Hare Algorithm)
算法
零零壹111 小时前
Apipost自定义函数深度实战:灵活处理参数值秘籍
算法·面试·github
搞程序的心海1 小时前
当机器学习遇见购物车分析:FP-Growth算法全解析
算法
S01d13r1 小时前
2024 蓝桥杯 Java 研究生组
java·职场和发展·蓝桥杯
Ludicrouers1 小时前
【Leetcode-Hot100】字母异位词分组
算法·leetcode·职场和发展
爱笑的Sunday1 小时前
【LeetCode 题解】数据库:1321.餐馆营业额变化增长
数据库·sql·leetcode
aw3442 小时前
tiny_dnn_test250101
人工智能·算法·dnn
风铃儿~2 小时前
Redis过期key处理、内存淘汰策略与缓存一致性策略实践方案
java·数据结构·redis·微服务
Bryce-Lin2 小时前
深度学习、图像算法学习记录
深度学习·学习·算法