动态规划:打家劫舍 II

参考资料:代码随想录

打家劫舍的解法和背包问题是两种不同的解题思路。

但同样是依赖于前面的状态推导。

打家劫舍2的关键思路在于对不同情况的分析。

考虑首节点,不考虑尾结点。

考虑尾结点,不考虑首节点。

从这两个里面选取最大值

class Solution {
    public int rob(int[] nums) {
        if(nums.length == 0) return 0;
        if(nums.length == 1) return nums[0];
        if(nums.length > 2){
            return Math.max(rob(nums,0,nums.length-2),rob(nums,1,nums.length-1));
        }else {
            return Math.max(nums[0],nums[1]);
        }
        
    }

    private int rob(int[] nums,int startIndex,int endIndex){
        //1.确定dp数组含义
        //int[] dp = new intp[nums.length];
        //2.初始化dp数组
        int x = nums[startIndex];
        int y = Math.max(nums[startIndex],nums[startIndex+1]);
        int z = 0;
        //3.确定遍历顺序
        for(int i = startIndex+2;i <= endIndex;i++){
            z = Math.max(x+nums[i],y);
            x = y;
            y = z;
        }
        return y;
    }
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 12:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 12:08:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 12:08:03       82 阅读
  4. Python语言-面向对象

    2024-06-06 12:08:03       91 阅读

热门阅读

  1. 前端 、Python 扁平化嵌套数组和应用场景

    2024-06-06 12:08:03       27 阅读
  2. 如何搭建开发一款看广告赚钱软件?

    2024-06-06 12:08:03       27 阅读
  3. spring整合kafka

    2024-06-06 12:08:03       23 阅读
  4. go语言接口之接口类型

    2024-06-06 12:08:03       33 阅读
  5. 爬山算法的详细介绍

    2024-06-06 12:08:03       34 阅读
  6. spring 事务失效的几种场景

    2024-06-06 12:08:03       26 阅读
  7. C#的线程锁

    2024-06-06 12:08:03       28 阅读
  8. django连接达梦数据库

    2024-06-06 12:08:03       25 阅读
  9. Lua使用方式介绍

    2024-06-06 12:08:03       27 阅读
  10. k8s中pod如何排错?

    2024-06-06 12:08:03       24 阅读
  11. C++学习笔记“类和对象”;运算符重载

    2024-06-06 12:08:03       32 阅读
  12. 二叉树的层平均值-力扣

    2024-06-06 12:08:03       31 阅读