解题思路
关键在于理解递推公式!!
看官方题解即可。
https://leetcode-cn.com/problems/house-robber/solution/da-jia-jie-she-by-leetcode-solution/
代码
class Solution {
public:
int rob(vector<int>& nums) {
int n = nums.size();
if (n == 1) {
return nums[0];
}
if (n == 2) {
return max(nums[0], nums[1]);
}
vector<int> states(n, 0);
// states[0] = nums[0];
// states[1] = max(nums[0], nums[1]);
// for (int i = 2; i < n; i++) {
// states[i] = max(states[i - 1], states[i - 2] + nums[i]);
// }
int first = nums[0];
int second = max(nums[0], nums[1]);
for (int i = 2; i < n; i++) {
int tmp = second;
second = max(second, first + nums[i]);
first = tmp;
}
return second;
}
};