1、
2、一次提交通过
偷第一个不要最后一个
偷最后一个不要第一个
class Solution {
public:
int rob(vector<int>& nums) {
int n = nums.size();
if(n==0) return 0;
if(n==1) return nums[0];
int dp0 = 0;
int dp1 = nums[0];
for(int i=1;i<n-1;i++)
{
int new_dp0 = max(dp0,dp1);
int new_dp1 = nums[i] + dp0;
dp0 = new_dp0;
dp1 = new_dp1;
}
int dp00 = 0;
int dp11 = nums[1];
for(int i=2;i<n;i++)
{
int new_dp00 = max(dp00,dp11);
int new_dp11 = nums[i] + dp00;
dp00 = new_dp00;
dp11 = new_dp11;
}
return max(max(dp0,dp1),max(dp00,dp11));
}
};