198-打家劫舍(fib)

从‘爬楼梯’到‘打家劫舍’:一维DP的保姆级刷题路线图(附LeetCode题号) 本文提供了一维动态规划(DP)的系统学习路线,从基础题目如LeetCode 70.爬楼梯到进阶问题如198.打家劫舍,详细解析状态转移方程和记忆化搜索技巧。通过实战案例和刷题路线图,帮助开发者掌握DP核心思想,提升算法解题能力。 阅读详情

题目

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

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

示例 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 。

题解

class Solution {
    public int rob(int[] nums) {
        if(nums.length==0){
            return 0;
        }
        //f(k):前k间房子中偷得的最高金额
        //f(0)=0,f(1)=nums[0]
        //递推公式:f(k)=max(f(k-1),h(k-1)+f(k-2))
        int[] dp=new int[nums.length+1];
        dp[0]=0;
        dp[1]=nums[0];
        for(int i=2;i<=nums.length;i++){
            dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i-1]);
        } 
        return dp[nums.length];
    }
}

笔记:

  1. 动态规划解题步骤:
    1. 确定f(N)的子问题f(k):在前k间房子中可偷得的最多的钱
    2. 确定递推公式 f(k)=max(f(k-1),f(k-2)+H(k-1))
    3. 确定边界条件
动态规划就此一篇 全网最详细, 逐步理解, 万字总结 文章目录动态规划 - 超详细系列首先,先大致列下这篇文章会讲到什么1.相较于暴力解法,动态规划带给我们的是什么?为什么会有重叠子问题以及怎么去避免的?2.用不同难度的动态规划问题举例说明, 最后会使用《打家劫舍》系列三个题再重温一次.一、动态规划带给我们的优势传统递归 vs. DP1. 先 递归解决2. 后 动态规划解决3. 动态规划 + 优化二、动态规划四大解题步骤处理问题步骤一:定义dp数组的... 阅读详情

相关推荐

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

py代码-咫片炫 算法59----打家劫舍【动态规划】 目录 Top~~ 一、题目:打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 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 。

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

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

oyall520的博客 1557

Sonatype nexus3 数据迁移及升级3.71+(迁移到H2数据库)

nexus3旧版本OrientDB升级H2,及整体迁移nexus3数据到其它服务器。

葫芦娃 5557

动态规划——House Robber (小偷问题)

对于小偷问题,我们分析子问题的依赖关系,发现每个 f(k) 依赖 f(k−1)和 f(k−2)。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。小偷问题,原问题是 “从全部房子中能偷到的最大金额”,将问题的规模缩小,子问题就是 “从 k个房子中能偷到的最大金额 ”,用 f(k)表示。如果不偷这个房子,那么问题就变成在前 k−1个房子中偷到最大的金额,也就是子问题 f(k−1)。如果偷这个房子,那么前一个房子。

h1666186的博客 1220

短信验证码接收平台完整搭建教程(超详细版,附完整源码)

在网站注册、用户登录、找回密码等功能中,验证码(特别是短信验证码)已成为验证用户身份的常见方式。本教程将详细介绍如何从零搭建一个短信验证码接收平台,用于保存、展示并管理来自短信网关或中间转发程序提交的验证码数据。✅ 教程适合有基本 Python/HTML 基础的开发者🚫 禁止用于任何违法用途,仅供学习参考✅ 支持通过 POST 接口接收短信验证码✅ 支持通过网页实时查看验证码历史记录✅ 验证码信息保存在 SQLite 数据库✅ 支持时间戳排序、查询最新验证码。

weixin_52548902的博客 4571

MMdetection3D与MMdetection版本匹配全攻略:从安装到测试一步到位

本文详细解析了MMdetection3D与MMdetection版本匹配的关键问题,提供了从环境配置到测试验证的完整指南。针对常见的安装错误,文章强调了版本依赖链(PyTorch、MMCV、MMDetection、MMDetection3D)精确对齐的重要性,并给出了基于CUDA 11.3等环境的实战版本组合与避坑方案,帮助用户高效部署3D目标检测开发环境。

xgboost6farmer的博客 240

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

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

luxuiary的博客 4022

PyRoki 入门教程(二)安装与使用

PyRoki是一个用于机器人运动学优化的Python库,具有模块化设计、可扩展性和跨平台支持等特点。它支持逆运动学、轨迹优化和动作重定位等任务,采用Levenberg-Marquardt优化器提高效率。主要功能包括:基于URDF的可微分正向运动学模型、自动生成碰撞基元、通用成本因子和自定义成本函数等。PyRoki支持CPU、GPU和TPU运行,适用于从单机器人到大规模并行处理场景。目前存在一些限制,如仅支持软约束、静态形状和特定关节类型等。官方提供了多个应用示例,包括基础逆运动学、碰撞检测、轨迹优化和手部/

机器人控制与仿真应用 1252

leetcode——动态规划问题(打家劫舍)

打家劫舍1 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 思路分析: 对于每一个房屋,要么偷要么不偷, 如果偷当前房屋,那么小偷就只能在下下一个房屋做...

vinojie的博客 1255

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

在 FlexSim 中建 AGV 小车模型时,如果设定“每次充电需要 2 小时才能充满”,应该如何配置 AGV 的充电功能?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 883

LeetCode 213. 打家劫舍 II

题目 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。 示例 1: 输入:nums = [2,3,2] 输出:3 解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相

午夜的行人 532

基于STM32设计的自动追光系统(项目资料ID:2)

基于STM32设计的自动追光系统主要由光敏采集电路、单片机核心板电路和步进电机控制电路构成。通过光敏电阻采集环境光强信息,经 STM32 单片机处理后,控制步进电机转动,实现对光源的自动追踪。该系统具有响应速度快、追踪精度较高等优点,可应用于太阳能发电、智能照明等领域,为相关场景提供高效的光资源利用方案。

以培养嵌入式工程师为己任 1万+

198. 打家劫舍

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

HSalome的博客 166

【AI智能体】Codex 开发聚合搜索应用项目实战操作详解

Codex 开发聚合搜索应用项目实战操作详解

congge 3100

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构与算法——动态规划

动态规划的核心思想:将大问题分解为小问题,通过解决小问题来逐步解决大问题,并且存储已解决的小问题的答案,以避免重复计算。如果我们知道了找给顾客任意小于或等于30元金额的最少硬币数量(即所有子问题的最优解),那么我们就可以通过组合这些最优解来找到找给顾客30元的最少硬币数量(即原问题的最优解)。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。一个问题的最优解包含其子问题的最优解,即可以通过组合子问题的最优解来构造原问题的最优解。

m0_58683132的博客 1368

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

2021-04-08 LeetCode动态规划--斐波那契数列

文章目录动态规划算法算法核心动态规划的两种形式动态规划的原理动态规划的经典模型题目70.爬楼梯题目大意解题思路代码实现198. 打家劫舍题目大意解题思路代码实现213. 打家劫舍 II题目大意解题思路代码实现 动态规划算法 算法核心 Those who cnnot remrember the past are condemned to repeat it. 动态规划算法的核心就是记住已经解决过的子问题的解。 动态规划的两种形式 自顶向下的备忘录法 以斐波那契数列为例子,备忘录方法的思想就是创建一个n+1大

m0_52675592的博客 324

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

2021-07-07 【算法】【动态规划】【自我练习】简单练习

文章目录简单热身打家劫舍 简单热身 LC509 class Solution: def fib(self, n: int) -> int: f =[0,1] for i in range(2,n+1): f.append(f[i-1]+f[i-2]) return f[n] LC1137 class Solution: def tribonacci(self, n: int) -> int:

qq_37137948的博客 145

LeetCode 【数据结构与算法专栏】【动态规划】

刷题笔记动态规划leetcode专栏leetcode 509 斐波那契数leetcode 70 爬楼梯leetcode 746 使用最小花费爬楼梯leetcode 62 不同路径leetcode 63 不同路径 IIleetcode 343 整数拆分leetcode 96 不同的二叉搜索树动态规划——0-1背包问题leetcode 416 分割等和子集 动态规划leetcode专栏 leetcode 509 斐波那契数 class Solution { public: int fib(int n)

CLZHIT的博客 1312

LeetCode动态规划训练营(1~5天)

第一天 LeetCode509.斐波拉契数 不说了,大一刚开学学会的第一个算法。这波直接回忆童年。 class Solution { public: int fib(int N) { if(N<=1) return N; vector<int> dp(N+1,0); dp[0] = 0; dp[1] = 1; for(int i=2;i<=N;i++){ ..

沉迷单车的追风少年 571

紫书 多阶段最短路径

多阶段最短路径

econg的博客 175

LeetCode——动态规划(Java)

记录一下自己刷题的历程以及代码。写题过程中参考了代码随想录的刷题路线。会附上一些个人的思路,如果有错误,可以在评论区提醒一下。原题链接和上一题 [中等] 416. 分割等和子集 相像,其实就是找出两堆重量尽量相近的石头。就是这一半石头堆能够取到的最大重量。就是另一个石头堆,且若两个石头堆重量无法相等,后者一定比前者大,所以最后的返回值就是二者之差i++)i++){//倒序遍历是保证每个数字只取一次i++){j--){

jhin_lx的博客 1432

动态规划立体匹配代码_刚刚拿到腾讯等众多名企校招offer,回来总结的「动态规划」,双手奉上...

该文由刚刚拿到offer的同学写的,据说写了好几天时间,解释+代码调试,希望大家给到 赞同 和小红心♥️目录0. 首先,先大致列下这篇文章会讲到什么 1.相较于暴力解法,动态规划带给我们的是什么?为什么会有重叠子问题以及怎么去避免的? 2.用不同难度的动态规划问题举例说明, 最后会使用《打家劫舍》系列三个题再重温一次. 一、动态规划带给我们的优势 传统递归 vs. DP 1. 先 递归解决...

weixin_39901439的博客 283

Leetcode_9【动态规划】//待完善

动态规划练习题

eyas3的博客 624

LeetCode刷题—动态规划(一)

跟着 labuladong 和 CS-Notes 对动态规划做题、总结,形成自己的模板。 引入动态规划 动态规划问题的一般形式就是求最值。求解动态规划的核心问题是穷举。 首先,动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者「DP table」来优化穷举过程,避免不必要的计算。 而且,动态规划问题一定会具备「最优子结构」,才能通过子问题的最值得到原问题的最值。 另外,虽然动态规划的核心思想就是穷举求最值,但是问题可以千变万化,穷举所有可行解其实并

qq_39181839的博客 425

leetcode算法习题----动态规划系列

斐波那契数列 1.斐波那契数列 题目描述: 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 给定 N,计算 F(N)。 示例 1: 输入:2 输出:1 解释:F(2) = F(1) ...

suoyudong的博客 960
上一篇: 70-爬楼梯(fib)
下一篇: 213-打家劫舍II(fib)
codrab
博客等级 码龄10年 15粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codrab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值