Leetcode 213
House Robber II
class Solution {
public:
int rob(vector<int>& nums) {
if (nums.size() == 1) return nums[0];
if (nums.size() == 0) return 0;
if (nums.size() == 2) return max(nums[0], nums[1]);
vector<int> t1={nums[0],max(nums[0], nums[1])};
for (int i = 2; i < nums.size()-1; i++) {
t1.push_back(max(nums[i]+t1[i-2], t1[i-1]));
}
vector<int> t2={nums[1], max(nums[1], nums[2])};
for (int i = 3; i < nums.size(); i++) {
t2.push_back(max(nums[i]+t2[i-3], t2[i-2]));
}
return max(t1.back(), t2.back());
}
};