且歌且行,眉目轻盈。何妨吟啸且徐行。|

胖柚の工作室

园龄:2年1个月粉丝:2关注:15

📂力扣
🔖dp
2024-04-16 09:54阅读: 5评论: 0推荐: 0

213. 打家劫舍 ll

题目链接:

状态划分:考虑是否偷 nums[0]

  • 若偷 nums[0],则 nums[1]nums[n1] 不能偷,问题变为从 nums[2]nums[n2] 的非环形版本,可直接调用 198 题的代码

  • 若不偷 nums[0],问题变为从 nums[1]nums[n1] 的非环形版本,同样调用198 题的代码解决

注:这种截出一段的非环形版本,用空间优化后的代码版本更为简洁。

class Solution {
public:
int rob1(vector<int> &nums, int start, int end) {//[start,end)左闭右开
int f0 = 0, f1 = 0;//f0表示上上次的结果, f1表示上次的结果
for (int i = start; i < end; i++) {
int new_f = max(f1, f0 + nums[i]);
f0 = f1;
f1 = new_f;
}
return f1;//f1是最后一次算出来的new_f
}
int rob(vector<int>& nums) {
int n = nums.size();
return max(nums[0] + rob1(nums, 2, n - 1), rob1(nums, 1, n));
}
};

本文作者:胖柚の工作室

本文链接:https://www.cnblogs.com/pangyou3s/p/18137499

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   胖柚の工作室  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起