198. 打家劫舍(动态规划)

【动态规划】leecode 198的打家劫舍1:为啥是dp而不是贪心 摘要: 本文分析了LeetCode 198题"打家劫舍"的动态规划解法。通过比较dp[n+1]和dp[n]两种写法,阐述了核心状态转移方程:dp[i] = max(dp[i-1], dp[i-2]+nums[i])。文章用通俗语言解释了为何这不是贪心算法(局部最优≠全局最优)和暴力穷举(O(n)优于O(2^n)),并展示了滚动变量优化空间复杂度为O(1)的技巧。通过示例[2,7,9,3,1]逐步演示算法过程,最终得出正确解12。两种dp数组写法差异在于:n+1长度时dp[1]对应nums 阅读详情
/**
 * 198. 打家劫舍
 * @author wsq
 * @date 2020/10/12
	你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
	给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
	
	示例 1:
	输入:[1,2,3,1]
	输出:4
	解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
	     偷窃到的最高金额 = 1 + 3 = 4 。
	
	示例 2:
	输入:[2,7,9,3,1]
	输出:12
	解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
	     偷窃到的最高金额 = 2 + 9 + 1 = 12 。
	
	链接:https://leetcode-cn.com/problems/house-robber
 */
package com.wsq.dp;

public class Rob {
	/**
	 *	简单的动态规划题
	 *	1.确认状态(最后一步和子问题)
	 *	2.转移方程
	 *	3.初始条件以及边界值
	 *	4.计算顺序
	 * @param nums
	 * @return
	 */
    public int rob(int[] nums) {
        int n = nums.length;
        if(n == 0){
            return 0;
        }
        int dp0 = 0;
        int dp1 = nums[0];
        // f[x] = max(dp0, dp1)
        // dp0 = max(dp0, dp1)
        // dp1 = num + dp0
        for(int i = 1; i < n; i++){
            int tmp = nums[i] + dp0;
            dp0 = Math.max(dp0, dp1);
            dp1 = tmp;
        }
        return dp0 > dp1 ? dp0 : dp1;
    }
}

可乐学习NVMe之一:为什么SSD需要NVMe 1. NVMe SSD 结构简图 整体来看,NVMe SSD可以分为三部分,host端的驱动NVMe Driver、PCIe+NVMe实现的控制器以及NAND Flash+DDR4/DDR5存储介质。 芯片回片后Host侧软件或者驱动开发主要在应用层,通过一些测试工具进行benchmark跑分测试,performance性能分析,latency分析、stress-testing等等: 那么,接下来阐述为什么SSD需要NVMe,并再后续的文章介绍NVMe协议分析,个人针对协议的理解,如果有不当之处,还请各 阅读详情

相关推荐

Veeam Backup & ONE download

前言 Veeam® Availability Suite™ 是 Veeam 的旗舰解决方案,可实现简单、灵活和可靠的数据管理。消除与数据保护、恢复、监控、勒索软件防护和合规性相关的手动流程,从而减轻数据维护压力。Veeam 能够帮助您节省时间和成本,同时支持您减少在备份方面花费的时间,将更多精力放在推动业务发展上。 Veeam Availability Suite Release 版本 包含 发布时间 复制磁力链接使用迅雷或者bittorrent ...

极致,细节 2002

Python每日一练-----打家劫舍

⛅(day13) 🖍题目: 假设你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组nums,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。(1 <= nums.length <= 100) 🌠示例 1: 输入:[1,2,3,1]输出:4原由:偷窃 1 号房屋 (金额 = 1) ,然后偷窃

m0_61791601的博客 2619

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 718

【LeetCode 198】打家劫舍——Python解决

1. 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,...

oyall520的博客 1557

三维点云孔洞修复(附Python代码和公共点云数据集链接)

(1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。

yanghl1215的博客 6954

【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变

本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。

yellow的专栏 699

leetcode刷题(第198题,213题,337题)——打家劫舍(I,II,III)

一、198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷 窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在 同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 输入:

weixin_47450807的博客 1353

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。

MQ0522的博客 4845

leetcode-打家劫舍

题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 解题思路 首先考虑最简单的情况。如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到

weixin_42127177的博客 851

在ParaView中编程实现涡量可视化

综上所述,本文介绍了在ParaView中使用编程方式实现涡量可视化的方法,并提供了相应的Python代码示例。通过灵活运用ParaView的编程接口,我们可以根据特定需求定制复杂的数据可视化流程,进一步深入了解和分析流体的旋转行为。ParaView是一款强大的开源数据可视化工具,它提供了丰富的功能和灵活的编程接口,使用户能够定制数据可视化流程。你可以根据需要自定义颜色映射范围和颜色,上述代码中的RGBPoints列表中包含了两个点,分别对应涡量值为0和10时的颜色。在实际使用过程中,你需要替换代码中的。

ByteProwl的博客 1437

麒麟v10系统安装

麒麟v10系统安装

喜文BLOG 1万+

【每日一练】你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 示例 2: ...

luxuiary的博客 4021

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

动态规划--打家劫舍LeetCode198

LeetCode198--打家劫舍 解: 这又是一道经典的数组动态规划题,诸如青蛙跳楼梯,爬楼梯等动态规划题一样。换汤不换药,不离其综,不变其魂! 还是那句话,想要最后的答案,动态规划必须回到最开始的问题,分析初始情况。 1、假设有 i 家待偷,第 i 家财物为 nums[i-1]。则我偷得的最大财物为dp[i-1]; 2、i = 1:我偷得最大财物 dp[0] = ...

qq_41054844的博客 369

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode198. 打家劫舍(java-动态规划)

每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。在递归的过程中,找到重复的值,也就是变量,进行缓存,

SP_1024的博客 1279

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码随想录笔记_动态规划_198打家劫舍

打家劫舍,力扣198,单序列问题,动态规划

Erik_Ying的博客 333

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[动态规划]Leetcode 198.打家劫舍(python)

[动态规划]Leetcode 198.打家劫舍(python) 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例1 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到

阿旭的博客 580

力扣198.打家劫舍---动态规划与滚动数组

力扣198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 示例 2:.

xiangguang_fight的博客 245

动态规划 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

题目链接: 198.打家劫舍 - 力扣(LeetCode) 213.打家劫舍II 题目链接: 213.打家劫舍II - 力扣(LeetCode) 337.打家劫舍III 题目链接: 337.打家劫舍III - 力扣(LeetCode)

Lchiyu的博客 172

代码随想录48——动态规划:198打家劫舍、213打家劫舍II、337打家劫舍III

的入门题目,因为是在树上进行状态转移,我们在讲解二叉树的时候说过递归三部曲,那么下面我以递归三部曲为框架,其中融合动规五部曲的内容来进行讲解。注意这里用的是**“考虑”,**例如情况三,虽然是考虑包含尾元素,但不一定要选尾部元素!i-1房,(注意这里是考虑,并不是一定要偷i-1房,这是很多同学容易混淆的点)在遍历的过程中,如果遇到空节点的话,很明显,无论偷还是不偷都是0,所以就返回。:今天的题目就不是背包问题了,就是普通的动态规划问题,可以看出来非常简单。最后给出本题的代码如下,其实还是比较简单的。

qq_42731705的博客 422

力扣198. 打家劫舍(动态规划)

力扣198. 打家劫舍(动态规划) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 +...

小麦China的博客 285

动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 II

动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 II Leetcode 198 打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报...

CSJ_CH3COOK的博客 244

[动态规划] 198. 打家劫舍 213. 打家劫舍 II(时间空间优化)

[动态规划] 198. 打家劫舍 213. 打家劫舍 II198.打家劫舍(基础题)题目分析思路:动态规划213. 打家劫舍 II(首尾认为是相邻的)题目分析思路1:动态规划 + 一趟遍历思路2:动态规划 两趟遍历(更简单,推荐) 198.打家劫舍(基础题) 题目链接:https://leetcode-cn.com/problems/house-robber/ 分类:动态规划 题目分析 这题简单来说,就是从数组中选择出的一定数量的元素,同时这些元素不能是相邻元素,要求找出满足条件的元素之和的最大值。

m0_38142029的博客 280

动态规划详细题解——力扣198.打家劫舍

本文介绍了LeetCode 198题"打家劫舍"的动态规划解法。题目要求在不触发相邻房屋警报的情况下,计算能偷取的最大金额。解题思路是建立状态转移方程dp[i] = max(dp[i-1], dp[i-2] + nums[i]),表示偷或不偷当前房屋的两种选择。文章提供了完整的Java实现代码,并进一步优化空间复杂度至O(1)。通过示例推导展示计算过程,最后还提到了该问题的系列扩展题目。这道题是理解动态规划思想的经典案例。

w1311823723的博客 1258

算法刷题day34|动态规划:198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

2.递推公式:如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。3.初始化:dp[0] 一定是 nums[0],dp[1]就是nums[0]和nums[1]的最大值即:dp[1] = max(nums[0], nums[1]);如果不偷第i房间,那么dp[i] = dp[i - 1],即考 虑i-1房。通过递归左节点,得到左节点偷与不偷的金钱。

qq_61936886的博客 621

Day48【动态规划】198.打家劫舍、213.打家劫舍II、337.打家劫舍III

打家劫舍系列题,不算太难

yangjihua的个人笔记博客 444
上一篇: 474. 一和零(动态规划)
下一篇: 530. 二叉搜索树的最小绝对差
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值