import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int rob (int[] nums) {
// write code here
// 动态规划 - dp[i]表示偷到第i家(偷or不偷)的最大收益
int n = nums.length;
if (n == 1) {
return nums[0];
}
int[] dp = new int[n];
for (int i = 0; i < n; i++) {
// 选择偷i号的收益
int yes = nums[i];
if (i - 2 >= 0) {
// i位置本身的金额,加上i-2处的最大收益
yes += dp[i - 2];
}
// 选择不偷i号的收益
int no = 0;
if (i - 1 >= 0) {
// i-1位置本身的最大收益
no += dp[i - 1];
}
// i位置的最大收益为偷or不偷两种情况收益的最大值
dp[i] = Math.max(yes, no);
}
return dp[n - 1];
}
}