【LeetCode】198.打家劫舍

news2024/12/23 7:20:15

198.打家劫舍(中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 思路

    • 定义数组 dp, dp[i] 表示抢劫到第 i 个房子的时候,可以抢劫的最大数量。
    • dp[i] 有两种可能:一种是我们选择不抢劫这个房子,此时累积金额为 dp[i-1] ;另一种是我们选择抢劫这个房子,那么此前累积的最大金额只能是 dp[i-2] ,因为我们不可能抢劫第 i-1 个房子,否则会触发警报机关。
    • 因此,本题的状态转移方程为:dp[i] = max(dp[i-1], dp[i-2] + nums[i-1]);
  2. 代码

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

    空间压缩

    class Solution {
    public:
        int rob(vector<int>& nums) {
            int n = nums.size();
            if(n == 1)    return nums[0];
            int pre1 = 0, pre2 = 0;
            int ans = 0;
            for(int i=0; i<n; ++i){
                ans = max(pre1, pre2 + nums[i]);
                pre2 = pre1;
                pre1 = ans;
            }
            return ans;
        }
    };
    
  3. 收获

    • 题解的思路只考虑到两个状态,比较简单。我自己做题的时候,使用的状态转移方程为: dp[i] = max(dp[i-2] + nums[i], dp[i-3] + nums[i]) ,除了初始化定义的 dp[0] = 0 ,还需要计算 dp[1]、 dp[2]、 dp[3] 三个初始状态,比较繁琐,最后返回的时候也需要比较 max(dp[n-1], dp[n-2]);
    • 我这里的 dp[i] 从 dp[0] 开始 ;而题解则是从 dp[1] 开始,理解起来也更方便,值得学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

儿童用灯哪个品牌好?推荐专业的儿童护眼台灯

一款好的儿童台灯&#xff0c;主要是从5个方面决定&#xff0c;照度及均匀度&#xff0c;蓝光&#xff0c;色温&#xff0c;显指&#xff0c;频闪 ① 照度及均匀度最高是国AA级&#xff0c;其次就是国A级 ② 蓝光一定要选择RG0无危险级&#xff0c;蓝光能量最强&#xff0c;…

给你安利一款不需要魔法就能免费使用的idea插件Bito-ChatGPT

一款不需要魔法就能免费使用的idea插件Bito-ChatGPT 一 、写在前面二、Bito是什么&#xff1f; &#x1f511;&#x1f511; **What does Bito AI do?**三 、安装Bito四、使用Bito4.1 创建个人工作空间4.2 使用Bito4.2.1 问任何技术问题&#xff08;Ask any technical questio…

端口聚合与Hash算法

目录 前言 一、Hash算法简介 二、负载分担 1.逐流负载分担 2.逐包负载分担 三、Hash算法与负载分担 1.转发原理 四、堆叠情况下的负载分担 五、配置流程 前言 提示&#xff1a;关于Hash与负载分担方式 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

Win11电脑桌面的图标变成白色了怎么解决?

Win11电脑桌面的图标变成白色了怎么解决&#xff1f;有用户将自己的电脑开机之后&#xff0c;出现了桌面图标变成白色的情况&#xff0c;虽然软件还是可以正常的打开&#xff0c;但是图标消失了看起来非常的不习惯&#xff0c;那么这个问题要怎么去解决呢&#xff1f;来看看以下…

PP825A 3BSE042240R3转换为后备控制系统和控制系统中的报警系统

​ ​ PP825A 3BSE042240R3转换为后备控制系统和控制系统中的报警系统 步进系统&#xff08;Stepper motor&#xff09;的优缺点是什么 步进电机-直流电流产生磁场。它是恒流系统。由于转子极数&#xff0c;扭矩随速度下降。 步进电机的优点 设计简单 控制简单 出色的低速扭矩…

德国 DocuWare 文档管理软件平台

DocuWare 是一个先进的平台&#xff0c;可让您集中、快速、有效地管理、处理和利用业务信息。 我们的文档管理和工作流程解决方案的各项功能可以集成到任何 IT 系统中&#xff0c;可以数字化任何部门的手动或纸质业务流程。提高您公司的生产力&#xff0c;让您的团队更轻松地完…

Matlab与ROS---TF坐标系(七)

0. 简介 我们上面讲了最基础的通信机制以及在Matlab中如何使用这些通信&#xff0c;下面我们这一讲来主要介绍ROS当中最常用的TF坐标系在Matlab中的使用。tf是分布式的&#xff0c;因此所有的坐标帧信息对ROS网络中的每个节点都是可用的。所以这一节就是带领读者熟悉该怎么在M…

gpt人工智能写论文怎么样-chatGTP如何写论文

用gpt写论文怎么样 使用 GPT 写论文具体的操作方法因人而异&#xff0c;但可以提供一些建议&#xff1a; 充分理解论文的题目、主题和结构&#xff0c;并确定论文所需的内容和方向。 针对论文的不同部分&#xff0c;使用 GPT 模型进行自动化生成或补充&#xff0c;例如摘要、…

Android签名 一 查看签名信息

你可能想知道 通过这篇文章可以解决哪些问题以及学到什么&#xff1a; 1.如果我们有一个应用&#xff0c;如何查看应用的签名信息&#xff1f; 2.如果我们有签名原始文件&#xff0c;如何查看签名文件中的签名信息&#xff1f; 这篇文章介绍了如何查看应用和签名文件中的签名信…

DiskGenius硬盘分区及数据恢复软件

目录 一、DiskGenius介绍 二、DiskGenius下载 三、DiskGenius功能 1、软件详细教程 2、将空闲空间合并到现有分区 3、无损扩容分区 4、注意事项&#xff1a; 一、DiskGenius介绍 DiskGenius是一款硬盘分区及数据恢复软件。它是在最初的DOS版的基础上开发而成的。Window…

PMP课堂模拟题目及解析(第3期)

21. 一家农业设备制造商因一个缺陷部件而召回数千个产品。这个问题导致许多客户不满&#xff0c;公司花费 500 万美元来修理和更换零件。哪一种成本预算类型可以防止这个问题&#xff1f; A. 非一致性成本 B. 一致性成本 C. 矩阵图 D. 多标准决策分析 22. 一位团队成员…

轨迹预测Leapfrog Diffusion Model for Stochastic Trajectory Prediction

结构速览 论文速读解决什么问题解决这个问题的几个关键点总体架构上面提出了哪些创新如何实现蛙跳如何处理轨迹表达和训练问题 0.Abstract1. Introduction第一段&#xff08;介绍轨迹预测这个研究方向&#xff09;第二段&#xff08;前人未来轨迹预测方面的研究有哪些&#xff…

EEG微状态的皮层电图激活模式

前言 脑电图(EEG)微状态是表征大脑静息态网络自发激活的短暂连续的稳定头皮场电位。脑电微状态被假定介导局部活动模式。为了验证这一假设&#xff0c;本研究将瞬时全局脑电微状态动力学与皮层脑电图(ECoG)和立体定向脑电图(SEEG)深度电极记录的局部时间谱演变相关联。假设这些…

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战

前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家&#x1f609;&#x1f609; &#x1f495; 座右铭&#xff1a; 先努力成长自己&#xff0c;再帮助更多的人 &#xff0…

camunda错误事件的用途

在Camunda中&#xff0c;错误事件是一种可以在任务或操作执行过程中捕获错误并进行处理的事件类型。使用错误事件可以提高工作流的可靠性和容错性&#xff0c;避免由于错误操作导致的工作流中断或数据丢失等问题。 使用错误事件可以处理以下情况&#xff1a; 1、捕获错误并进…

K8s基础3——应用部署流程、服务编排、集群资源利用率、日志管理

文章目录 一、应用部署流程二、服务编排2.1 YAML文件格式说明2.2 部署应用2.2.1 命令部署2.2.2 yaml文件部署2.2.2.1 编写deployment.yaml文件2.2.2.2 编写service.yaml文件2.2.2.3 两个yaml文件混用2.2.2.4 测试——service和deployment的标签不一致导致访问网页混乱 2.2.3 自…

用JIRA管理你的项目——(三)基于LDAP用户管理

JIRA提供了基于LDAP方式的用户管理&#xff0c;也就是用户密码的管理交给LDAP&#xff0c;而JIRA只管理用户在系统中的角色。 相关链接&#xff1a; 用JIRA管理你的项目——&#xff08;一&#xff09;JIRA环境搭建 用JIRA管理你的项目——&#xff08;二&#xff09;JIRA语言…

AI 工具合辑盘点(五)持续更新

AI 视频生成和编辑工具 当今&#xff0c;视频已经成为最受欢迎的媒介之一。我们喜欢观看视频&#xff0c;但是制作高质量的视频需要耗费大量时间和精力。 无论你是内容创作者、专业视频编辑师&#xff0c;还是完全的新手&#xff0c;按照传统方式制作视频需要掌握各种知识、技…

[杂谈]从《天堂2》到永恒之塔私服的感慨

不才在下是个老丫头了&#xff0c;平时喜欢潜水&#xff0c;还是在玩激战时注册的多玩论坛号&#xff0c;也不怎么说话&#xff0c;都是看别人说得多&#xff08;害羞嘛……&#xff09;。 想当年《天堂二》内测时&#xff0c;刚好在成都开了个内测号 首发会&#xff0c;我大清…

[230509]托福听力真题TPO66|精听 Lecture2:marine biology class|9:45~11:30+12:00~12:30

目录 Lecture 2 一、要点 二、文本 三、文本注释 概括描述fins ⬆️ 详细描述two general types of fins ⬇️ 1st type 2nd type 今日marine biology class重点 不是所有的鱼都有caudal fins caudal fins的两个例子 四、复听笔记 Lecture 2 一、要点 1. 开…