题解 | 打家劫舍(二)
打家劫舍(二)
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
if(nums.length==1){
return nums[0];
}
int[] dp =new int[nums.length-1];
int[] dp1 =new int[nums.length];
dp[0]=nums[0];
dp[1]=Integer.max(nums[0],nums[1]);
for(int i=2;i<nums.length-1;i++){
dp[i]=Integer.max(nums[i]+dp[i-2],dp[i-1]);
}
dp1[0]=0;
dp1[1]=nums[1];
dp1[2]=Integer.max(nums[1],nums[2]);
for(int i=3;i<nums.length;i++){
dp1[i]=Integer.max(nums[i]+dp1[i-2],dp1[i-1]);
}
return Integer.max(dp[nums.length-2],dp1[dp1.length-1]);
}
}
妈的,太绕了,偷第一家,不偷最后一家,偷最后一家不偷第一家;
