213. House Robber II
class Solution {
public:
int rob(vector<int>& nums)
{
int n = nums.size();
if (n == 1) return nums[0];
int excludeLast = robRange(nums, 0, n - 1);
int excludeFirst = robRange(nums, 1, n);
return max(excludeLast, excludeFirst);
}
int robRange(vector<int>& nums, int left, int right)
{
int robbed = 0, notRobbed = 0;
for (int i = left; i < right; ++i)
{
int prevRobbed = robbed;
robbed = max(robbed, nums[i] + notRobbed);
notRobbed = prevRobbed;
}
return robbed;
}
};
- T:
- S: