leetcode 213. 打家劫舍 II
213. 打家劫舍 比较简单。
这一题只不过比上一题多讨论一下第一个和最后一个取谁的情况即可
复杂度2*n
class Solution {
public:
int rob(vector<int>& nums) {
int n=nums.size();
if(n==1) return nums[0];
if(n==0) return 0;
int dp[n+3];
dp[0]=0;
int M=0;
for(int i=1;i<n;i++)
{
if(i==1) dp[i]=nums[i-1];
else
{
dp[i]=max(dp[i-2]+nums[i-1],dp[i-1]);
}
M=max(dp[i],M);
}
dp[1]=0;
for(int i=2;i<=n;i++)
{
if(i==2) dp[i]=nums[i-1];
else
{
dp[i]=max(dp[i-2]+nums[i-1],dp[i-1]);
}
M=max(dp[i],M);
}
return M;
}
};
还没有评论,来说两句吧...