leetcode 198 打家劫舍 (House Robber)

class Solution {
public:
    int rob(vector<int>& nums) {
        int last,next2Last,ans;
        if(nums.empty()){
            return 0;
        }
        if(nums.size()==1){
            return nums[0];
        }
        next2Last=nums[0];
        last=max(nums[0],nums[1]);
        ans=last;
        //int N=nums.size()-2;
        for(int i=2;i<nums.size();i++){
            ans=max(next2Last+nums[i],last);
            
            next2Last=last;
            last=ans;
        }
        return ans;
    }
};
View Code

dp[i+1] 只能是二者之一

{

  1. 如果算上当前数,即nums[i+1],ans = dp[i-1] + nums[i+1]
  2. 如果不算,dp[i+1] = dp[i]

}

猜你喜欢

转载自www.cnblogs.com/azureice/p/leetcode198.html
今日推荐