class Solution {
private:
int robHelp(vector<int> & nums,int start,int end)
{
if(end-start+1==1)
return nums[start];
if(end-start+1==2)
return max(nums[start],nums[start+1]);
vector<int> dp(end-start+1,0);
dp[0]=nums[start];
dp[1]=max(nums[start],nums[start+1]);
for(int i=start+2;i<=end;i++)
{
dp[i-start]=max(dp[i-start-1],dp[i-start-2]+nums[i]);
}
return dp[end-start];
}
public:
int rob(vector<int>& nums) {
if(nums.size()==0)
return 0;
else if(nums.size()==1)
return nums[0];
else if(nums.size()==2)
return max(nums[0],nums[1]);
else
{
return max(robHelp(nums,0,nums.size()-2),robHelp(nums,1,nums.size()-1));
}
}
};
House Robber II
最新推荐文章于 2019-08-16 15:38:48 发布