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]);
}
};