【LeetCode198】House Robber

class Solution {
public:
    int rob(vector<int>& nums) {
        int siz = nums.size();
        if(siz == 0) return 0;
        if(siz == 1) return nums[0];
        vector<int> result;
        result.push_back(nums[0]);
        result.push_back(nums[1]);
        int max_val = nums[0];
        for(int i = 2; i < siz; i++){
            result.push_back(max_val+nums[i]);
            max_val = max(max_val, result[i-1]);
        }
        return max(result[siz-2], result[siz-1]);
    }
};

改进版:

Runtime: 4 ms, faster than 100.00% of C++ online submissions for House Robber.

Memory Usage: 8.5 MB, less than 100.00% of C++ online submissions for House Robber.

class Solution {
public:
    int rob(vector<int>& nums) {
        int siz = nums.size();
        if(siz == 0) return 0;
        if(siz == 1) return nums[0];
        if(siz == 2) return max(nums[0], nums[1]);
        if(siz == 3) return max(nums[0]+nums[2], nums[1]);
        vector<int> result;
        result.push_back(nums[0]);
        result.push_back(nums[1]);
        result.push_back(nums[0]+nums[2]);
        for(int i = 3; i < siz; i++){
            result.push_back(max(result[i-3], result[i-2]) + nums[i]);
        }
        return max(result[siz-2], result[siz-1]);
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_39458342/article/details/88886394
今日推荐