news 2026/6/10 21:35:46

力扣 打家劫舍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 打家劫舍

题目:

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

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

一、题目理解

给定一个数组nums,其中:

  • nums[i]表示第i间房子的金额

  • 相邻的房子不能同时抢

目标是:
在不触发警报的前提下,抢到最多的钱


二、为什么这是动态规划问题?

这是一个**典型的「选择 + 约束」问题:

  • 每一间房子只有两种选择:

    • 不抢

  • 选择当前房子,会影响后续选择(相邻不能抢)

这种「当前决策依赖之前结果」的结构,非常适合用动态规划(DP)


三、状态定义(关键)

定义:

dp[i] = 抢到第 i 间房子为止,能够获得的最大金额

注意:

  • dp[i] 不是「是否抢第 i 家」

  • 而是:在前 i 家房子中,能拿到的最大值


四、状态转移方程(核心)

考虑第i间房子,有两种情况:

情况 1:不抢第 i 间房

那么最大金额等于:dp[i-1]

情况 2:抢第 i 间房

  • 那第i-1间房一定不能抢

  • 上一个合法状态只能来自i-2

  • 那么最大金额等于:dp[i-2] + nums[i]

    class Solution { public: int rob(vector<int>& nums) { int n = nums.size(); if (n == 1) return nums[0]; vector<int> dp(n); dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for (int i = 2; i < n; i++) { dp[i] = max(dp[i-1], dp[i-2] + nums[i]); } return dp[n-1]; } };

综合两种情况

dp[i] = max( dp[i-1], dp[i-2] + nums[i] )

这一步是整道题的灵魂


五、初始条件

dp[0] = nums[0] dp[1] = max(nums[0], nums[1])

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:28:08

机器学习25:了解领域自适应(Domain Adaptation)

摘要本周课程介绍了领域自适应&#xff08;Domain Adaptation&#xff09;的基本概念与必要性。当训练数据与测试数据分布不一致时&#xff0c;模型性能会显著下降&#xff0c;领域自适应旨在解决此问题。课程重点讲解了领域对抗训练方法&#xff0c;通过特征提取器与领域分类器…

作者头像 李华
网站建设 2026/6/10 12:34:27

*边值分析**:聚焦输入域边界,选取边界值及其邻近值

测试用例示例如三角形判定通过输入三边 a、b、c 判断三角形类型&#xff0c;其设计逻辑体现了对正常与异常场景的全面覆盖。正常情况包括等边&#xff08;abc&#xff09;、等腰&#xff08;ab≠c 等&#xff09;、不等边&#xff08;a≠b≠c&#xff09;三角形&#xff1b;而异…

作者头像 李华
网站建设 2026/6/10 12:37:39

JVM 学习小记(边学边充实)

&#x1f431;‍&#x1f453; 一、JVM 1.1 JVM基本定义 定义&#xff1a;Java Virtual Machine-Java 程序的运行环境&#xff08;Java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写后&#xff0c;任意环境都可运行 自动内存管理、垃圾回收功能 数组下标…

作者头像 李华
网站建设 2026/6/10 12:29:16

突破传统桎梏:Rust双剑合璧打造极致桌面应用

突破传统桎梏&#xff1a;Rust双剑合璧打造极致桌面应用 【免费下载链接】loco &#x1f682; &#x1f980; The one-person framework for Rust for side-projects and startups 项目地址: https://gitcode.com/GitHub_Trending/lo/loco 还在为桌面应用开发的层层障碍…

作者头像 李华
网站建设 2026/6/10 20:27:59

11、Linux 系统操作指南:从基础命令到文件管理

Linux 系统操作指南:从基础命令到文件管理 1. 让 Shell 选项成为默认设置 在使用 Linux 系统时,如果你发现某些 Shell 选项很有用,可能希望将它们设置为默认选项。当你启动一个 Shell 时,有许多环境变量会控制其行为。对于 Linux 中的默认 Shell——bash,默认信息存储在…

作者头像 李华