LeetCode刷题笔记 字节每日打卡 打家劫舍 II

news/2024/7/7 10:49:41 标签: leetcode, 动态规划, 算法

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

示例 1:

输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

参考:力扣


1、 如果nums只有一个数,则返回一个数

2、如果nums有两个数,则返回两个数

3、其他:返回遍历[1,l-1]不遍历第一个数 [0,l-2]不遍历最后一个数的最大值。

4、遍历过程

dp储存目前的最佳选择

状态转移方程:dp[i]=max(dp[i−2]+nums[i],dp[i−1])

class Solution {
    // 动态规划
    // 分偷第一家还是最后一家,并比较两者大小
    // 其余方法都和1一样
    public int rob(int[] nums) {
        int l=nums.length;
        if(l==1){
            return nums[0];
        }else if(l==2){
            return Math.max(nums[0],nums[1]);
        }
        int[] dp=new int[l];
        return Math.max(robPro(dp,nums,0,l-2),robPro(dp,nums,1,l-1));
    }
    private int robPro(int[] dp,int[] nums,int min,int max){
        dp[min]=nums[min];
        dp[min+1]=Math.max(nums[min+1],dp[min]);
        for(int i=min+2;i<=max;i++){
            dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[max];
    } 
}

http://www.niftyadmin.cn/n/843526.html

相关文章

beyond compare 与git diff整合

这两天花了点时间最终在Window和Mac上把Beyong Compare和git整合好。当中遇到到非常多坑&#xff0c;如今把这些都分享出来。希望对大家有帮助。首先如果你已经装好了Beyong Compare。然后在~/bin/文件夹下新建一个git-diff-wrapper.shwindow系统的git bash的git-diff-wrapper.…

Spring刷题笔记 面试题 如何开启基于注解的自动装配?

要使用 Autowired&#xff0c;需要注册 AutowiredAnnotationBeanPostProcessor&#xff0c;可以有以下两种方式来实现&#xff1a; 1、引入配置文件中的<bean>下引入 <context:annotation-config> <beans> <context:annotation-config /> <…

vue项目中结合element ui解决连续上传多张图片及图片编辑问题

编码都是以需求为导向的&#xff0c;所以编码前一定要弄清楚需要的结果是什么&#xff0c;然后再开始编码。 现在简单的说下需求&#xff1a;如下图所示&#xff0c;点击蓝色的“”按钮&#xff0c;可以连续生成多个图片上传框&#xff0c;每个图片上传框都是单独上传图片&…

JAVA 接口题目1

转载于:https://www.cnblogs.com/xt641151246/p/5532867.html

抽屉式导航可能减少产品一半的用户參与度

设想你须要设计一个含有很多页面和模块&#xff0c;不能在一屏内显示全然的应用。你一定会首先想到去设计一个底部或顶部的Tab导航。等一下。多出来的一排导航看上去有点碍眼?我们尝试下把他们收到側边栏里。或者叫安卓团队给它的名字“側边抽屉导航”。 假设你们的应用的也是…

Spring刷题笔记 面试题 请举例解释@Required注解?

在产品级别的应用中&#xff0c;IoC容器可能声明了数十万个bean&#xff0c;bean与bean之间有着复杂的依赖关系。设值注解方法的短板之一就是验证所有的属性是否被注解是一项十分困难的操作。可以通过在<bean>中设置“dependency-check”来解决这个问题。 在应用程序的生…

Remastersys打包你自己的ubuntu成iso文件,保存原来的所有配置

你是不是辛辛苦苦地配好了ubuntu结果不久又重装&#xff0c;然后又重新配置很久呢&#xff1f; 笔者好不容易配置好了torch&#xff0c;但是换硬盘&#xff0c;于是就想到了将ubuntu打包成iso文件&#xff0c;下次直接安装&#xff0c;然后配置好的东西都搬过来了。 采用Remast…

Spring刷题笔记 面试题 请举例解释@Autowired注解?

Autowired注解对自动装配何时何处被实现提供了更多细粒度的控制。 Autowired注解可以像Required注解、构造器一样被用于在bean的设值方法上自动装配bean的属性&#xff0c;一个参数或者带有任意名称或带有多个参数的方法。 比如&#xff0c;可以在设值方法上使用Autowired注解…