leetcode 213: House Robber II

来源:互联网 发布:用记事本c语言写hello 编辑:程序博客网 时间:2024/05/17 03:56

Do the DP two times, one time starts from house 0 to house n-2 and one time starts from house 1 to house n-1. Return the maximum result.

class Solution {public:    int rob(vector<int>& nums) {        if(nums.empty())            return 0;        int n=nums.size();        if(n==1)            return nums[0];        int max1,max2;        vector<int> dp(n,0);        dp[0]=dp[1]=nums[0];        for(int i=2;i<n-1;i++)            dp[i]=max(dp[i-1],dp[i-2]+nums[i]);        max1=dp[n-2];        dp[1]=nums[1];        dp[2]=max(nums[1],nums[2]);        for(int i=3;i<n;i++)            dp[i]=max(dp[i-1],dp[i-2]+nums[i]);        max2=dp[n-1];        return max(max1,max2);    }};


0 0
原创粉丝点击