s4553711
6/1/2017 - 3:18 PM

213.cpp

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);
    }
};