class Solution {
public:
int rob(vector<int>& nums) {
if (nums.size() == 0)
return 0;
if (nums.size() == 1)
return nums[0];
int pre = 0, cur1 = 0, cur2 = 0, temp = -1;
for (int i = 0, size = nums.size(); i < size - 1; ++i){
temp = cur1;
cur1 = max(nums[i] + pre, cur1);
pre = temp;
}
pre = 0;
for (int i = 1, size = nums.size(); i < size; ++i){
temp = cur2;
cur2 = max(nums[i] + pre, cur2);
pre = temp;
}
return max(cur1, cur2);
}
};