LeetCode213. 打家劫舍 II

思路

这个题是打家劫舍I的变形。

把环切开就是之前的打家劫舍题了。但是这个题把环切开后需要分为两个数组来计算,因为数组汇总第一个和最后一个元素不能同时选中。

具体思路可以参照上一题的思路。

LeetCode198. 打家劫舍_想进阿里的小菜鸡的博客-CSDN博客

代码

class Solution {
    public int rob(int[] nums) {
        if(nums.length == 1){
            return nums[0];
        }
        if(nums.length == 2){
            return Math.max(nums[0],nums[1]);
        }
        
        int res1=robsub(nums,0,nums.length-2);
        int res2=robsub(nums,1,nums.length-1);
        return Math.max(res1,res2);
    }
    public int robsub(int[] nums,int start,int end){
        int dp[] = new int[end-start+1];
        dp[0] = nums[start];
        dp[1]=Math.max(nums[start],nums[start+1]);
        for(int i = 2;i

你可能感兴趣的:(LeetCode,leetcode,动态规划)