House Robber(C++打家劫舍)

解題思路:

(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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章