/**
* 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;
}
}
相关推荐
Veeam Backup & ONE download
前言 Veeam® Availability Suite™ 是 Veeam 的旗舰解决方案,可实现简单、灵活和可靠的数据管理。消除与数据保护、恢复、监控、勒索软件防护和合规性相关的手动流程,从而减轻数据维护压力。Veeam 能够帮助您节省时间和成本,同时支持您减少在备份方面花费的时间,将更多精力放在推动业务发展上。 Veeam Availability Suite Release 版本 包含 发布时间 复制磁力链接使用迅雷或者bittorrent ...
Python每日一练-----打家劫舍
⛅(day13) 🖍题目: 假设你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组nums,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。(1 <= nums.length <= 100) 🌠示例 1: 输入:[1,2,3,1]输出:4原由:偷窃 1 号房屋 (金额 = 1) ,然后偷窃
Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)
本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。
【LeetCode 198】打家劫舍——Python解决
1. 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,...
三维点云孔洞修复(附Python代码和公共点云数据集链接)
(1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。
【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变
本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。
leetcode刷题(第198题,213题,337题)——打家劫舍(I,II,III)
一、198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷 窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在 同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 输入:
【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通
本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。
leetcode-打家劫舍
题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 解题思路 首先考虑最简单的情况。如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到
在ParaView中编程实现涡量可视化
综上所述,本文介绍了在ParaView中使用编程方式实现涡量可视化的方法,并提供了相应的Python代码示例。通过灵活运用ParaView的编程接口,我们可以根据特定需求定制复杂的数据可视化流程,进一步深入了解和分析流体的旋转行为。ParaView是一款强大的开源数据可视化工具,它提供了丰富的功能和灵活的编程接口,使用户能够定制数据可视化流程。你可以根据需要自定义颜色映射范围和颜色,上述代码中的RGBPoints列表中包含了两个点,分别对应涡量值为0和10时的颜色。在实际使用过程中,你需要替换代码中的。
麒麟v10系统安装
麒麟v10系统安装
【每日一练】你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 示例 2: ...
智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现
张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!
动态规划--打家劫舍LeetCode198
LeetCode198--打家劫舍 解: 这又是一道经典的数组动态规划题,诸如青蛙跳楼梯,爬楼梯等动态规划题一样。换汤不换药,不离其综,不变其魂! 还是那句话,想要最后的答案,动态规划必须回到最开始的问题,分析初始情况。 1、假设有 i 家待偷,第 i 家财物为 nums[i-1]。则我偷得的最大财物为dp[i-1]; 2、i = 1:我偷得最大财物 dp[0] = ...
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
leetcode198. 打家劫舍(java-动态规划)
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。在递归的过程中,找到重复的值,也就是变量,进行缓存,
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
代码随想录笔记_动态规划_198打家劫舍
打家劫舍,力扣198,单序列问题,动态规划
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)。 偷窃到
力扣198.打家劫舍---动态规划与滚动数组
力扣198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 示例 2:.
动态规划 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III
题目链接: 198.打家劫舍 - 力扣(LeetCode) 213.打家劫舍II 题目链接: 213.打家劫舍II - 力扣(LeetCode) 337.打家劫舍III 题目链接: 337.打家劫舍III - 力扣(LeetCode)
代码随想录48——动态规划:198打家劫舍、213打家劫舍II、337打家劫舍III
的入门题目,因为是在树上进行状态转移,我们在讲解二叉树的时候说过递归三部曲,那么下面我以递归三部曲为框架,其中融合动规五部曲的内容来进行讲解。注意这里用的是**“考虑”,**例如情况三,虽然是考虑包含尾元素,但不一定要选尾部元素!i-1房,(注意这里是考虑,并不是一定要偷i-1房,这是很多同学容易混淆的点)在遍历的过程中,如果遇到空节点的话,很明显,无论偷还是不偷都是0,所以就返回。:今天的题目就不是背包问题了,就是普通的动态规划问题,可以看出来非常简单。最后给出本题的代码如下,其实还是比较简单的。
力扣198. 打家劫舍(动态规划)
力扣198. 打家劫舍(动态规划) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 +...
动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 II
动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 II Leetcode 198 打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报...
[动态规划] 198. 打家劫舍 213. 打家劫舍 II(时间空间优化)
[动态规划] 198. 打家劫舍 213. 打家劫舍 II198.打家劫舍(基础题)题目分析思路:动态规划213. 打家劫舍 II(首尾认为是相邻的)题目分析思路1:动态规划 + 一趟遍历思路2:动态规划 两趟遍历(更简单,推荐) 198.打家劫舍(基础题) 题目链接:https://leetcode-cn.com/problems/house-robber/ 分类:动态规划 题目分析 这题简单来说,就是从数组中选择出的一定数量的元素,同时这些元素不能是相邻元素,要求找出满足条件的元素之和的最大值。
动态规划详细题解——力扣198.打家劫舍
本文介绍了LeetCode 198题"打家劫舍"的动态规划解法。题目要求在不触发相邻房屋警报的情况下,计算能偷取的最大金额。解题思路是建立状态转移方程dp[i] = max(dp[i-1], dp[i-2] + nums[i]),表示偷或不偷当前房屋的两种选择。文章提供了完整的Java实现代码,并进一步优化空间复杂度至O(1)。通过示例推导展示计算过程,最后还提到了该问题的系列扩展题目。这道题是理解动态规划思想的经典案例。
算法刷题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房。通过递归左节点,得到左节点偷与不偷的金钱。
Day48【动态规划】198.打家劫舍、213.打家劫舍II、337.打家劫舍III
打家劫舍系列题,不算太难
2002



被折叠的 条评论
为什么被折叠?



