news 2026/6/6 17:31:32

LeetCode 213:打家劫舍 II(House Robber II)—— 题解 ✅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 213:打家劫舍 II(House Robber II)—— 题解 ✅

LeetCode 213:打家劫舍 II(House Robber II)—— 题解 ✅

📖 内容概要

你是一个专业的小偷,计划偷窃沿街的房屋。
所有房屋围成一圈,这意味着第一间房和最后一间房相邻。
如果两间相邻的房屋在同一晚上被闯入,系统会自动报警。

求在不触动警报的前提下,一夜之间能够偷窃到的最高金额

✅ 动态规划
✅ 环状结构拆环
✅ 基于 LeetCode 198 的变形


💡 解题思路(核心)

一、关键难点:环形限制

由于房屋是环形

  • 偷了第 1 间 →不能偷第 n 间
  • 偷了第 n 间 →不能偷第 1 间

二、拆环为链(核心思想)

将环形问题拆分为两个线性问题:

情况偷窃范围
情况 1第 1 间 ~ 第 n-1 间
情况 2第 2 间 ~ 第 n 间

✅ 两种情况互不冲突
✅ 分别用「打家劫舍 I」求解
✅ 取最大值


三、状态转移(复用 198)

dp[i]=max(dp[i-1],// 不偷当前dp[i-2]+nums[i]// 偷当前)

✅ AC 代码(Java)

classSolution{publicintrob(int[]nums){intlen=nums.length;if(len==1){returnnums[0];}// 拆成两个线性问题int[]a=Arrays.copyOf(nums,len-1);// 不含最后一间int[]b=Arrays.copyOfRange(nums,1,len);// 不含第一间returnMath.max(help(a),help(b));}// 线性打家劫舍(198 题)publicinthelp(int[]nums){intlen=nums.length;if(len==1){returnnums[0];}int[]dp=newint[len];dp[0]=nums[0];dp[1]=Math.max(nums[0],nums[1]);for(inti=2;i<len;i++){dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i]);}returndp[len-1];}}

⏱️ 复杂度分析

指标复杂度
时间复杂度O(n)
空间复杂度O(n)(可优化为 O(1))

🔍 与「打家劫舍 I」的对比

题目结构解法
198线性街道一次 DP
213环形拆成两个线性 DP

✅ 一句话总结

环形 = 去掉第一家 or 去掉最后一家,取两者最大值。


📌 面试加分点(建议记住)

  • ✅ 为什么不能直接用线性 DP?
  • ✅ 为什么拆成两段就一定正确?
  • ✅ 如何进一步优化空间?
  • ✅ 与树形 DP(337)的区别
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 17:30:03

如何用Obsidian Execute Code实现R语言数据分析与笔记一体化工作流

如何用Obsidian Execute Code实现R语言数据分析与笔记一体化工作流 【免费下载链接】obsidian-execute-code Obsidian Plugin to execute code in a note. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-execute-code 你是否厌倦了在RStudio、Jupyter Notebook…

作者头像 李华
网站建设 2026/6/6 17:28:58

从零开始:使用Digital-Logic-Sim掌握数字电路设计的5个关键步骤

从零开始&#xff1a;使用Digital-Logic-Sim掌握数字电路设计的5个关键步骤 【免费下载链接】Digital-Logic-Sim 项目地址: https://gitcode.com/gh_mirrors/di/Digital-Logic-Sim Digital-Logic-Sim是一款极简主义的数字逻辑模拟器&#xff0c;专为电子爱好者、学生和…

作者头像 李华
网站建设 2026/6/6 17:27:54

3分钟解锁网易云NCM音乐:Windows图形化解密工具使用指南

3分钟解锁网易云NCM音乐&#xff1a;Windows图形化解密工具使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了喜爱的歌曲&am…

作者头像 李华
网站建设 2026/6/6 17:27:03

编译原理实验避坑指南:PL/0词法分析GetSym()函数改造与测试心得

PL/0词法分析实战&#xff1a;从状态机设计到多字符运算符的精准识别当你在编译原理实验中第一次面对PL/0的词法分析器时&#xff0c;那个看似简单的GetSym()函数可能很快就会变成一场噩梦。特别是在需要扩展语言特性时——比如添加新的运算符或保留字——原本清晰的代码结构突…

作者头像 李华