当前位置: 首页 > news >正文

重练算法(代码随想录版) day39 - 动态规划part7

今日刷题量:3
当前刷题总量:150
Easy: 59
Mid: 84
Hard: 7

Day39
解题思想
198 打家劫舍 I(线性数组)

  • 约束:相邻不能同时偷。
  • 状态:dp[i]:偷到第 i 家(0..i)为止的最大金额
  • 转移:dp[i] = max(dp[i-1], dp[i-2] + nums[i])
    • 不偷 i:沿用 dp[i-1]
    • 偷 i:必须不偷 i-1,所以用 dp[i-2] + nums[i]
  • 初始化
    • dp[0]=nums[0]
    • dp[1]=max(nums[0], nums[1])
  • 优化:滚动变量 O(1) 空间

213 打家劫舍 II(环形数组)

  • 约束:相邻不能偷,并且 首尾也相邻。
  • 核心判断:第一家和最后一家不能同时偷 → 拆成两个线性问题(都用 198):
    • 只考虑 [0..n-2](排除最后一家)
    • 只考虑 [1..n-1](排除第一家)
    • 答案:max(rob(0..n-2), rob(1..n-1))
  • 也可以用滚动变量

337 打家劫舍 III(树形)

  • 约束:父子不能同时偷(相邻节点不能同时偷)
  • 对每个节点 u 做两种状态:
    • notRob[u]:不偷 u 的最大值
    • rob[u]:偷 u 的最大值
  • 转移:
    • rob[u] = u.val + notRob[left] + notRob[right]
    • notRob[u] = max(notRob[left], rob[left]) + max(notRob[right], rob[right])
  • 答案:max(notRob[root], rob[root])
  • 遍历方式:递归 DFS(天然后序),因为父节点需要先知道孩子的状态。

总结:
198:结构是线性 → 依赖 i-1、i-2
213:结构是环 → “断环成两条线”各跑一次 198
337:结构是树 → 每个点做“偷/不偷”两状态,后序合并

练习题目
198.打家劫舍(mid):https://leetcode.cn/problems/house-robber/
213.打家劫舍II (mid):https://leetcode.cn/problems/house-robber-ii/description/
337.打家劫舍III(mid):https://leetcode.cn/problems/house-robber-iii/description/

http://www.rkmt.cn/news/94513.html

相关文章:

  • 影刀RPA×AI强强联合!小红书限时折扣活动一键创建,效率提升40倍![特殊字符]
  • AtCoder Beginner Contest 436 ABCDEF 题目解析
  • 2025中餐适配的厨余处理器测评:七大品牌研磨精度与管道保护能力对比 - 速递信息
  • 2025厨余处理器品牌年终测评:十大热门品牌对决,深度解析选优质款 - 速递信息
  • # NCHUD-数字电路模拟程序和课堂测验
  • 整体设计 定稿 之23 dashboard.html 增加三层次动态记录体系仪表盘 之2 程序 (Q199 之1)
  • ABC 436 解题报告
  • 探索快手平台:如何通过官方API接口获取作品详细信息
  • 国产操作系统:自主可控的技术突围
  • 发电。
  • Portfolio个人作品集网站:5分钟快速搭建专业在线简历终极指南
  • ComfyUI-SeedVR2视频超分项目FP8量化技术深度解析
  • 2025年降AI率工具实测!5个降AI工具推荐:免费降AIGC工具指南
  • Halo博客系统审计
  • tk.simpledialog-创建简单的模态对话框
  • STranslate 翻译 工具 v2.0.0 绿色便携版 翻译、OCR工具
  • 终极指南:免费获取卓里奇数学分析教材PDF完整资源
  • 毕业设计实战:基于SSM+MySQL的校园外卖服务系统设计与实现,从需求到上线全流程指南!
  • Pyperclip终极指南:3分钟掌握Python跨平台剪贴板操作
  • COMSOL模拟锌离子电池锌负极电场模型教程:从零开始构建并详细解析源文件,适合初学者的电场建模教学
  • 5分钟掌握LIBERO:开启终身机器人学习的革命性平台
  • Zigpy:Python驱动的智能家居Zigbee通信解决方案
  • Gleam语言深度解析:类型安全与跨平台编程的新范式
  • 解决Ubuntu/Linux/Gnome 打开文件慢,使用chrome打开文件更慢/卡死问题
  • Capacitor跨平台开发终极指南:用Web技术构建原生应用
  • 终极指南:如何用PIKE-RAG打造领域专属的智能问答系统
  • 009.数组排序
  • JavaEE:多线程基础,多线程的创建和用法 - 实践
  • 8051U深度入门到32位51大型实战
  • 吐血整理,装修前的灵魂拷问!口碑炸裂的装修公司大盘点 - 品牌测评鉴赏家