解題思路:
(1)首先這題劃分爲easy,我感覺有些不合理,至少是medium
(2)使用動態規劃的思想 a[i] = max(nums[len-1-i]+a[i-2],nums[len-i]+a[i-3]);
class Solution {
public:
int rob(vector<int>& nums) {
int len = nums.size();
if(len==0) return 0;
if(len==1) return nums[0];
if(len==2) return max(nums[0],nums[1]);
if(len==3) return max(nums[0]+nums[2],nums[1]);
int *a = new int[len];
a[0] = nums[len-1];
a[1] = max(nums[len-2],nums[len-1]);
a[2] = max(nums[len-3]+a[0],nums[len-2]);
for(int i=3;i<len;i++) {
a[i] = max(nums[len-1-i]+a[i-2],nums[len-i]+a[i-3]);
}
int temp = a[len-1];
delete []a;
return temp;
}
};