213. 打家劫舍 ll
题目链接:
状态划分:考虑是否偷
-
若偷
,则 和 不能偷,问题变为从 到 的非环形版本,可直接调用 198 题的代码 -
若不偷
,问题变为从 到 的非环形版本,同样调用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 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步