class Solution {
public:
int rob(vector<int>& nums) {
int size=nums.size();
vector<int>dq(size);
vector<int>dq2(size);
if(size==0)
{
return 0;
}
if(size==1)
{
return nums[0];
}
if(size==2)
{
return max(nums[0],nums[1]);
}
dq[0]=nums[0];
dq[1]=max(nums[0],nums[1]);
dq2[2]=max(nums[2],nums[1]);
dq2[1]=nums[1];
for(int i=2;i<size-1;i++)
{
dq[i]=max(dq[i-1],dq[i-2]+nums[i]);
}
int d1=dq[size-2];
if(size>=3)
{
for(int i=3;i<size;i++)
{
dq2[i]=max(dq2[i-1],dq2[i-2]+nums[i]);
}
int d2=dq2[size-1];
return max(d1,d2);
}
return dq[1];
}
};
这题也不能完全算是自己做的,因为我参考了198.打家劫舍 的答案。
啊啊啊!!
加油吧。