LeetCode—打家劫舍Ⅱ(DP)

打家劫舍Ⅱ(中等)

2020年8月5日

题目来源:力扣

LeetCode—打家劫舍Ⅱ(DP)_第1张图片

解题
在打家劫舍的思路上进行修改。
题目是个环,我把环看成两段,就又是打家劫舍Ⅰ的思路了

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]);
    }
}

LeetCode—打家劫舍Ⅱ(DP)_第2张图片

你可能感兴趣的:(LeetCode)