2023每日刷题(五十二)
Leetcode—213.打家劫舍II
算法思路
实现代码
class Solution {
public:
// 左闭右开
int rob1(vector<int>& nums, int start, int end) {
int n = nums.size();
int f0 = 0, f1 = 0, new_f = 0;
for(int i = start; i < end; i++) {
new_f = max(f1, f0 + nums[i]);
f0 = f1;
f1 = new_f;
}
return new_f;
}
int rob(vector<int>& nums) {
int n = nums.size();
if(n == 1) {
return nums[0];
}
if(n == 2) {
return max(nums[0], nums[1]);
}
// 讨论偷不偷第一家
return max(nums[0] + rob1(nums, 2, n - 1), rob1(nums, 1, n));
}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!