力扣 198.打家劫舍【中等】

news2025/1/17 13:51:32

198.打家劫舍

  • 1 题目
  • 2 思路
  • 3 代码
  • 4 结果

1 题目

题目来源:力扣(LeetCode)https://leetcode.cn/problems/house-robber

题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

2 思路

有三种情况:

  1. 只有一间房
    偷这间房,获得最大收益
  2. 只有两间房
    选择金额较大的房间,获得最大收益
  3. 房间数大于2
    对于第i间房,偷窃的方式有两种:(1)偷第 i 间房,获得的最大收益为第 i 间房金额+前面 i - 2 间房的最大收益;(2)不偷第 i 间房,获得的最大收益为前 i - 1 间房的最大收益。
    因此解题思路为:从前往后,依次计算第 i 间房可以获得的最大收益并存储,直到 i = n。
    空间优化:计算第 i 间房最大收益时,只需要用到前 i - 1 结果和前 i - 2 结果,因此只需要一个长度为2的数组记录这两个结果,以减少空间复杂度

3 代码

int rob(vector<int>& nums)
{
    int length = nums.size();
    if(length==0)
    {
        return 0;
    }
    else if(length==1)
    {
        return nums[0];
    }
    else if(length == 2)
    {
        return max(nums[0],nums[1]);
    }
    else
    {
        long sum = 0;
        long i_max[length];
        i_max[0] = nums[0];
        i_max[1] = max(nums[0],nums[1]);
        for(int i=2;i<nums.size();i++)
        { 
            i_max[i] = max(i_max[i-1],i_max[i-2]+nums[i]);
        }
        return i_max[length-1];
    }  
}

4 结果

在这里插入图片描述

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

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

相关文章

【Vue3】初始化和Composition API(组合式)

Vue3 创建Vue3.0工程查看自己的vue/cli版本&#xff0c;使用Vue/cli创建使用vite创建 查看Vue3.0工程vue.config.js中&#xff0c;关闭语法检查&#xff0c;main.js讲解app.vue讲解 常用的Composition API&#xff08;组合式&#xff09;1.拉开序幕的setup返回对象返回渲染函数…

降级npm后,出现xxx 不是内部或外部命令解决方法

比如我安装了anyproxy npm install anyproxy -g 之后在cmd中输入anyproxy 发现 anyproxy 不是内部或外部命令解决方法. 一般出现这样的问题原因是npm安装出现了问题&#xff0c;全局模块目录没有被添加到系统环境变量。 Windows用户检查下npm的目录是否加入了系统变量P…

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测 目录 时序预测 | MATLAB实现Hamilton滤波AR时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 预测在很大程度上取决于适合周期的模型和所采用的预测方法,就像它们依赖于过滤器提取的周期一样。标准 Hodrick-P…

Top-down方法学

Top-down方法学由Intel提出&#xff0c;是一种软件性能分析技术。 x86处理器的PMU一般提供8个PMC&#xff0c;其中4个是固定的PMC&#xff0c;其对应的监控信号是不能配置的。另外4个PMC监控的信号是可以配置的。 Top-down方法学的动机 通过PMC&#xff0c;软件工程师可以获…

【观察】超融合+软件定义,构建双活数据中心“新范式”

随着数字化转型的加速&#xff0c;企业的业务经营活动越来越多依赖于数据中心等基础设施&#xff0c;“全天候”业务连续性运营也正成为大中型企业追求的目标&#xff0c;如何实现减少甚至消除正常和非正常的停机对业务可用性造成的影响&#xff0c;不但是企业IT建设与运维团队…

Spring - 更简单的获取 Bean 对象

目录 二、获取 Bean 对象&#xff08;对象装配或者对象注入&#xff09; 1. 属性注入 1.1 属性注入的优点和缺点&#xff1a; 2. Setter注入 2.1 Setter注入的优点和缺点 3. 构造方法注入&#xff08;spring 官方推荐的对象注入方式&#xff09; 3.1 构造方法的优点和缺点…

【PHP面试题47】Redis的持久化有哪几种?有什么区别?谈谈你的理解

文章目录 一、前言二、RDB&#xff08;Redis数据库&#xff09;持久化方式2.1 触发条件2.2 RDB文件的格式2.3 RDB持久化原理2.4 RDB方式的优缺点 三、AOF&#xff08;Append Only File&#xff09;持久化方式3.1 触发条件3.2 AOF文件的格式3.3 AOF持久化原理3.4 AOF方式的优缺点…

cmake项目相关的变量

cmake项目相关的变量 在cmake项目中&#xff0c;通常需要对路径进行操作&#xff0c;比如我们需要知道源码的顶级目录&#xff0c;源码的构建目录和某个project名字相关的一些目录等。 CMAKE_SOURCE_DIR&#xff0c;这个变量的值代表的是源码的顶级目录。但是这个变量的值可能…

Python(十一)变量多次赋值

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

【hadoop】部署hadoop的本地模式

hadoop的本地模式 本地模式的特点部署本地模式测试本地模式是否部署完成 本地模式的特点 没有HDFS、也没有Yarn只能测试MapReduce程序&#xff0c;作为一个普通的Java程序处理的数据是本地Linux的文件一般用于开发和测试 部署本地模式 进入该路径 /root/training/hadoop-2.7…

吴恩达机器学习2022-Jupyter

1 可选实验室: Python、 NumPy 和矢量化 简要介绍本课程中使用的一些科学计算。特别是 NumPy 科学计算包及其与 python 的使用。 2 目标 在这个实验室里将回顾课程中使用的 NumPy 和 Python 的特性。 Python 是本课程中使用的编程语言。NumPy 库扩展了 python 的基本功能&a…

mac 如何批量修改图片名称

mac 如何批量修改图片名称&#xff1f;很多使用mac电脑的小伙伴一直有这样一个疑问&#xff0c;怎么在电脑上一次性的批量修改大量图片的名称&#xff0c;很多小伙伴在电脑上整理图片的时候都需要批量重命名&#xff0c;批量处理的功能可以让我们节省不少的时间和精力&#xff…

抖音seo怎么选择关键词

要查找抖音的关键词&#xff0c;以进行SEO优化&#xff0c;可以按照以下步骤进行&#xff1a; 1. 关键词分析与筛选&#xff1a; 首先&#xff0c;你需要确定你的目标受众和内容类型。了解你的目标用户是谁&#xff0c;他们可能会搜索什么样的内容。然后&#xff0c;使用关键…

虾皮一面:手写一个Strategy模式(策略模式)

说在前面 在40岁老架构师 尼恩的读者交流区(50)中&#xff0c;最近有指导一个小伙伴面试架构师&#xff0c;面试的公司包括虾皮、希音、美团等大厂&#xff0c;目标薪酬50K以上&#xff0c;遇到了一个比较初级的问题&#xff1a; 请手写一个Strategy模式&#xff08;策略模式…

基于物联网技术的养老院管理系统设计与实现_kai

基于物联网技术的养老院管理系统设计与 实现 摘 要 随着我国老年人口数量的逐年增加&#xff0c;人口抚养比也在迅速攀升&#xff0c;越来越多的老年人将走 出家门进入养老院安度自己的晚年。同时国家和地方也相继出台了加快发展老龄事业的政策 方针&#xff0c;作为机构养老…

Shell之循环语句 —— For 实验

循环 循环就是重复执行一段代码的结构&#xff0c;通过循环可在满足一定的条件下&#xff0c;多次执行相同的代码。 循环语句&#xff1a;循环体 —— 代码的总结构 循环条件 —— 当循环条件满足时&#xff0c;循环体代码才会被执行&#xff0c;否则条件不满足…

SpringCloud Alibaba——Nacos中的Distro协议

一、Nacos中的Distro协议 Nacos 每个节点自己负责部分的写请求。每个节点会把自己负责的新增数据同步给其他节点。每个节点定时发送自己负责数据的校验值到其他节点来保持数据一致性每个节点独立处理读请求&#xff0c;及时从本地发出响应。新加入的 Distro 节点会进行全量数据…

【高并发网络通信架构】3.引入IO多路复用(select,poll,epoll)实现高并发tcp服务端

目录 一&#xff0c;往期文章 二&#xff0c;基本概念 IO多路复用 select 模型 poll 模型 epoll 模型 select&#xff0c;poll&#xff0c;epoll 三者对比 三&#xff0c;函数清单 1.select 方法 2.fd_set 结构体 3.poll 方法 4.struct pollfd 结构体 5.epoll_cre…

前端uni-app自定义精美全端复制文本插件,支持全端文本复制插件 可设置复制按钮颜色

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

读数据压缩入门笔记07_自适应统计编码

1. 位置对熵的重要性 1.1. 为了计算概率总需要多遍历一次数据集&#xff0c;而在计算出整个数据集中各符号的出现概率后&#xff0c;还要继续处理这些数值 1.1.1. 如果是相对较小的数据集&#xff0c;那么这些就不是什么问题 1.2. 随着要压缩的数据集变大&#xff0c;统计编…