题目链接:LeeCode213打家劫舍Ⅱ
题目描述:
根据Leetcode198打家劫舍的思路多一个限制就是用1不能用n,用n不能用1,所以开了两个数组,一个存除了1的最大值,一个存除了n的最大值
class Solution {
public static int rob(int[] nums) {
if(nums.length==1)return nums[0];
if(nums.length==2)return Math.max(nums[0], nums[1]);
int[][] dp=new int[2][nums.length];
dp[0][0]=nums[0];
dp[0][nums.length-1]=0;
dp[0][1]=Math.max(nums[0], nums[1]);
dp[1][0]=0;
dp[1][1]=nums[1];
for (int i = 2; i < nums.length; i++) {
if(i!= nums.length-1) dp[0][i]=Math.max(dp[0][i-2]+nums[i],dp[0][i-1]);
else dp[0][i]=dp[0][i-1];
dp[1][i]=Math.max(dp[1][i-2]+nums[i],dp[1][i-1]);
}
return Math.max(dp[0][nums.length-1],dp[1][nums.length-1]);
}
}