打家劫舍Ⅱ(中等)
2020年8月5日
题目来源:力扣
解题
在打家劫舍的思路上进行修改。
题目是个环,我把环看成两段,就又是打家劫舍Ⅰ的思路了
class Solution {
public int rob(int[] nums) {
//数组长度
int len=nums.length;
if(len==0) return 0;
if(len==1) return nums[0];
//创建一个记录最大值
int max=0;
//创建一个dp数组
int[] dp=new int[len+1];
dp[0]=0;
dp[1]=nums[0];
//dp遍历,找最大
for(int i=2;i<=len-1;i++){
dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i-1]);
}
max=dp[len-1];
dp[0]=0;
dp[1]=nums[1];
//dp遍历,找最大
for(int i=2;i<=len-1;i++){
dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i]);
}
return Math.max(max,dp[len-1]);
}
}