213. House Robber II
class Solution { public: int rob(vector<int>& nums) { if (nums.size() == 0) return 0; if (nums.size() == 1) return nums[0]; return max(helper(nums, 0, nums.size()-2), helper(nums, 1, nums.size()-1)); } int helper(vector<int>& nums, int start, int end) { vector<int> dp1(end+1, 0); // choose dp1[start] = nums[start]; vector<int> dp2(end+1, 0); // not choose for (int i = start+1; i <= end; i++) { dp1[i] = dp2[i-1] + nums[i]; // choose it: not choose i-1 dp2[i] = max(dp2[i-1], dp1[i-1]); // not choose it: max(not choose i-1, choose i-1) } return max(dp1[end], dp2[end]); } };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步