题解 | #打家劫舍(二)#
打家劫舍(二)
https://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int rob (int[] nums) { // write code here //第一家要偷 int[] dp1 = new int[nums.length+1]; dp1[1]=nums[0]; for(int i=2;i<nums.length;i++)//最后一家就不能偷了,因此nums[i-1]不遍历 { dp1[i]=Math.max(dp1[i-1],dp1[i-2]+nums[i-1]); } //第一家不偷 int[] dp2 = new int[nums.length+1]; dp2[1]=0; for(int i=2;i<=nums.length;i++)//最后一家可以偷,因为nums[i-1]遍历 { dp2[i]=Math.max(dp2[i-1],dp2[i-2]+nums[i-1]); } return Math.max(dp1[nums.length-1],dp2[nums.length]); } }