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

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

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

📖 内容概要

你是一个专业的小偷,计划偷窃沿街的房屋。
每间房都有一定数量的现金,但相邻的房屋装有连通的防盗系统
如果两间相邻的房屋在同一晚上被闯入,系统会自动报警。

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

✅ 动态规划
✅ 线性 DP
✅ 面试高频题


💡 解题思路(核心)

一、状态定义

dp[i]=到第 i 间房子为止,能偷到的最大金额

二、状态转移方程(最重要)

对于第i间房子,有两种选择:

选择说明金额
不偷继承前一家的最大金额dp[i-1]
加上前两家的金额dp[i-2] + nums[i]
dp[i]=max(dp[i-1],dp[i-2]+nums[i])

三、边界条件

情况说明
只有一间房只能偷这一间
有两间房偷金额较大的那一间
dp[0]=nums[0];dp[1]=max(nums[0],nums[1]);

✅ AC 代码(Java)

classSolution{publicintrob(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))

🚀 空间优化(进阶)

由于dp[i]只依赖前两个状态:

intprev2=nums[0];intprev1=Math.max(nums[0],nums[1]);for(inti=2;i<nums.length;i++){intcurr=Math.max(prev1,prev2+nums[i]);prev2=prev1;prev1=curr;}returnprev1;

✅ 一句话总结

要么不偷当前房子,要么偷当前房子 + 前两间的最优解,取最大值。


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

  • ✅ 为什么不能偷相邻房间?
  • ✅ 为什么是dp[i-2] + nums[i]而不是dp[i-1] + nums[i]
  • ✅ 如何优化空间复杂度?
  • ✅ 与「打家劫舍 II(环形房屋)」的关系
http://www.jsqmd.com/news/963173/

相关文章:

  • 跨平台解决方案:在Windows电脑上获取官方macOS安装文件的完整指南
  • Fillinger智能填充:如何用Illustrator脚本插件实现20倍设计效率提升
  • VSCode设置文件setting.json老弹警告?关掉这个选项,5秒搞定‘Unable to load schema’报错
  • 3分钟找回十年青春记忆:GetQzonehistory完整导出QQ空间说说终极指南
  • 消费电子设计实战:破解多快少困局,平衡功能、性能与成本
  • 从芯片设计到航天ASIC:五年工程师的抗辐照实战与自主创新思考
  • Pycharm里.gitignore配置踩坑实录:如何正确忽略.idea和venv文件夹(附缓存清理方法)
  • 上海品牌首饰回收服务指南:六家正规平台详细对比(2026年6月) - 薛定谔的梨花猫
  • 技术思维与商业思维的鸿沟:工程师如何跨越“亲妈滤镜”成为优秀CEO
  • 抖音批量下载工具终极指南:3步实现无水印视频高效获取
  • 告别软件盗版烦恼:用YT88加密狗5分钟搞定C#/Java/Python源代码加密(附完整开发包)
  • 终极指南:如何使用Mod Engine 2为魂类游戏打造个性化模组体验
  • 液态金属变形技术:从电场控制原理到嵌入式系统实现
  • LSTM时序预测实战代码包:ETTh1电力负荷、污染数据等多场景Python实现
  • 51单片机音乐喷泉项目全套开发资料:原理图+PCB+Keil工程+实拍效果
  • ZYNQ7000硬件设计避坑指南:MIO引脚分配与EMIO扩展的实战经验分享
  • Python-O365:企业级Microsoft 365自动化工作流构建指南
  • 开源国标视频监控平台架构方案:构建企业级GB28181协议栈的微服务实现
  • 告别被割韭菜!上海 5 家无套路黄金回收门店实测 - 开心测评
  • 告别重复插拔U盘!手把手教你将Clonezilla备份和飞腾麒麟系统打包成单一ISO,实现批量刷机
  • Python Matter Server:构建本地智能家居控制中枢的技术实现
  • 紧急预警!CSDN将于2024年11月起关闭旧版定时发布入口——现在掌握新V3.2自动化方案的最后机会
  • Claude工程化AI系统:宪法对齐、MoE调度与企业级RAG实战解析
  • MATLAB生成Quartus MIF文件:FPGA查找表数据初始化完整指南
  • 黄金变现谨防虚报高价套路!哈尔滨优质奢品机构全流程拆解测评 - 奢侈品交易观察员
  • 保姆级教程:在群晖DSM 7上安装并配置MariaDB 10,开启远程访问
  • STM32H743 + W25Q64JV SPI Flash DMA读写工程(含MDK/IAR双平台、SDRAM支持)
  • CCS7.3烧写DSP FLASH避坑指南:如何精准擦除指定扇区,保留Bootloader不误删
  • AMIR-GRPO:强化学习优化数学推理的隐式偏好技术
  • 手把手复现禅道11.6后台漏洞:从SQL注入到RCE的完整攻击链分析