需要维护一个dp数组:max(dp[i-1],nums[i],dp[i - 2] + nums[i])
代码如下:
public int max(int[] nums) {
int[] dp = new int[nums.length];
dp[0] = Math.max(0, nums[0]);
dp[1] = Math.max(dp[0], nums[1]);
int max = Math.max(dp[0], dp[1]);
for(int i = 2; i < nums.length; i++) {
dp[i] = Math.max(Math.max(nums[I], dp[i - 2] + nums[i]), dp[i - 1]);
max = Math.max(max, dp[i]);
}
return max;
}