题目:打家劫舍 II
1// 这里的辅助函数与上题一样
2int robRange(std::vector<int>& nums, int start, int end)
3{
4 int prev1 = 0, prev2 = 0;
5 for(int i = start; i < end; i++)
6 {
7 int temp = prev2;
8 prev2 = std::max(prev2, prev1 + nums[i]);
9 prev1 = temp;
10 }
11 return prev2;
12}
13int rob(vector<int>& nums)
14{
15 int n = nums.size();
16 if(n == 1) return nums[0];
17 if(n == 2) return std::max(nums[0], nums[1]);
18
19 int res1 = robRange(nums, 0, n - 1);
20 int res2 = robRange(nums, 1, n);
21
22 return std::max(res1, res2);
23}
来源:语雀原笔记