Posted on

Description

Submission

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.empty()) return 0;
        if(nums.size() == 1) return nums[0];
        vector<int> dp(nums.size());

        dp[0] = nums[0];
        dp[1] = max(nums[0], nums[1]);

        for(int i = 2; i < nums.size(); ++i) {
            dp[i] = max(dp[i-1], nums[i] + dp[i-2]);
        }

        return dp.back();
    }
};
class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        nums.insert(nums.begin(), 0);
        vector<int> dp(n+1);
        dp[0] = 0;
        dp[1] = nums[1];

        for(int i = 2; i <= n; ++i) {
            dp[i] = max(dp[i-2] + nums[i], dp[i-1]);
        }

        return dp[n];
    }
};

// dp[i]: the maximum amount of money you can rob until i-th

Leave a Reply

Your email address will not be published. Required fields are marked *