题目描述

未优化的DP

class Solution {
public int rob(int[] nums) {
int[] dp = new int[nums.length];
dp[0] = nums[0];
int max = dp[0];
if (nums.length <= 1) {
return max;
}
dp[1] = Math.max(nums[0], nums[1]);
max = Math.max(dp[0], dp[1]);
for (int i = 2; i < nums.length; i++) {
dp[i] = Math.max(nums[i] + dp[i - 2], dp[i - 1]);
max = Math.max(max, dp[i]);
}
return max;
}
}
优化空间
class Solution {
public int rob(int[] nums) {
int b = nums[0];
int max = b;
if (nums.length <= 1) {
return max;
}
int a = Math.max(nums[0], nums[1]);
max = Math.max(a, b);
for (int i = 2; i < nums.length; i++) {
int c = Math.max(nums[i] + b, a);
max = Math.max(max, c);
b = a;
a = c;
}
return max;
}
}