import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int rob (int[] nums) { // write code here if (nums == null || nums.length < 1) { return 0; } int n = nums.length; if (n == 1) { return nums[0]; } int[] dp = new int[n]; // 偷第一家 dp[0] = nums[0]; for (int i = 2; i < n - 1; i++) { dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]); } int max = dp[n - 2]; Arrays.fill(dp, 0); dp[1] = nums[1]; // 偷最后一家 for (int i = 2; i < n; i++) { dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]); } return Math.max(max, dp[n - 1]); } }