LeetCode 0198. House Robber

2023-11-01

问题简析

作为职业小偷,我要去打家劫舍。但是注意如果两家相邻房子在同一夜被打劫了,则会触发警报。
现在给定一个非负整数构成的数列,代表连续的若干房屋中的财产数量。计算一晚上最多能偷多少钱。
例如:nums = [1,2,3,1],最大值为1 + 3=4;nums = [2,7,9,3,1],最大值为2 + 9 + 1 = 12.

思路:动态规划。
f(n) 表示a[0]到a[n-1]家最多能偷多少钱。
如果偷a[n-1]家,那么就不能偷a[n-2]家,则此时值为a[n] + f(n-2)
如果不偷a[n-1]家,那么值为f(n-1)
取二者中较大值:
f(n) = max{f(n-1), a[n-1] + f(n-2)}

注意事项

1)不要忘了考虑数组长度为0的情况;
2)注意dp数组大小是n+1。因为我们的定义是:f(n) 表示a[0]到a[n-1]家最多能偷多少钱;
3)要初始化f(0), f(1);
4)循环也要相应地注意:最后边界应该是<=len;
5)返回值是f(n)。

题解

class Solution {
public:
    int rob(vector<int>& nums) {
        int len = nums.size();
        // 还不要忘了考虑数组长度为0的情况!
        if (len == 0)
            return 0;
        // 注意这里数组大小是n+1。因为我们的定义是:f(n) 表示a[0]到a[n-1]家最多能偷多少钱
        vector<int> dp(len + 1, 0);
        // 要初始化f{0), f(1)
        dp[0] = 0; dp[1] = nums[0];
        // 循环也要相应地注意:最后边界应该是<=len
        for (int i = 2; i <= len; i++) {
            if (dp[i - 1] > nums[i - 1] + dp[i - 2])
                dp[i] = dp[i - 1];
            else
                dp[i] = nums[i- 1] + dp[i - 2];
        }
        return dp[len];     // 这里返回值是f(n)
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 0198. House Robber 的相关文章

  • 故障诊断 matlab 仿真,基于MATLAB的BP网络变压器故障诊断仿真

    62 内 燃 机 与 配 件基于MATLAB的BP网络变压器故障诊断仿真 郑广瑞 王娜 包头供电局 包 头 014000 摘要 基于油中溶解气体分析针变压器故障诊断的对传统方法 在诊断过程中各存在不同程度的诊断缺陷 导致输出的诊断结果 不准
  • elasticsearch 模糊查询

    1 使用关键字wildcard 2 它使用标准的 shell 通配符查询 匹配任意字符 匹配 0 或多个字符 GET cars transactions search pretty query wildcard city value ia
  • js 设置style属性

    var cssText font weight bold color red 下面写法用于firefox类型浏览器 element setAttribute style cssText 下面写法用于IE类型浏览器 element style
  • 【深度学习】遗传算法

    目录 一 遗传算法 二 遗传算法概述 2 1 选择 2 2 交叉 2 3 变异 三 遗传算法的基本步骤 3 1 编码 3 2 初始群体的生成 3 3 适应度评估 3 4 选择 3 5 交叉 3 6 变异 3 7 总结 四 遗传算法工具箱 4
  • BSGS

    BSGS 问题 给定整数 a b p a b p a b p 其中 a
  • ioctl详解(Linux设备驱动程序模块)

    我这里说的ioctl函数是指驱动程序里的 因为我不知道还有没有别的场合用到了它 所以就规定了我们讨论的范围 写这篇文章是因为我前一阵子被ioctl给搞混了 这几天才弄明白它 于是在这里清理一下头脑 一 什么是ioctl ioctl是设备驱动
  • 面试大厂最常考算法之一LRU缓存算法

    题目 146 LRU 缓存机制 运用你所掌握的数据结构 设计和实现一个 LRU 最近最少使用 缓存机制 实现 LRUCache 类 LRUCache int capacity 以正整数作为容量 capacity 初始化 LRU 缓存 int
  • 官网无法下载 AndroidStudio 解决

    问题 官网无法下载 AndroidStudio 解决 复制链接 更换 redirector gvt1 com 为 dl google com 即可下载
  • 动态规划之矩阵连乘(C语言)

    include
  • 【YOLOv5问题记录】thop库的安装

    最近开始学习YOLOv5 踩了不少坑 总结一下问题 配置环境按照这篇教程来的 Yolov5的配置 训练 超级详细 小学生玩编程的博客 CSDN博客 训练数据集跟着炮哥的这篇 目标检测 教你利用yolov5训练自己的目标检测模型 yolov5
  • liunx如何重启mysql

    Linux如何重启MySQL Linux中重启MySQL可以使用service mysql restart命令和脚本启动方式 etc inint d mysql restart 推荐 MySQL教程 其他命令如下 一 启动 1 使用 ser
  • leetcode第一题详解

    第一题两数之和 这个题没有什么难度啊 标示的足够清楚了 1暴力解法 加法 class Solution public int twoSum int nums int target 外层循环 遍历数组nums for int i 0 i lt
  • vue动态路由

    import Vue from vue import Router from vue router import layout from components layout Vue use Router 动态路由 export const
  • 用Caffe提取深度特征

    用Caffe提取深度特征 发表于 2015 05 28 1条评论 最近做对比实验 要比较非深度的方法加上deep feature之后的效果 于是就用Caffe提了一把特征 过程不困难但是有点繁琐 姑且记录下来 留个参考 准备工作 用Caff
  • jd-gui - 打开jar出现中文乱码问题

    我们平时会使用JD GUI来直接打开别的项目的jar包 来看看源码里有什么问题 代码里都是英文注释倒还好 要是有中文的注释 可能就会发生下面的情况 乱码了 这里不像eclipse或者idea 直接在设置里配置编码格式为UTF 8即可 但是j
  • kettle增量抽取

    通过时间去增量抽取 数据源 1 新建trans转换 设置变量 step1 mysql输入 不勾选 允许建议转换 勾选中文可能会乱码 step2 设置变量 2 新建trans转换 根据变量抽取数据 step1 获取变量 step2 表输入 s
  • uni-app和web-view页面相互传参

    在uni app中 可以通过uni navigateTo和uni redirectTo等方法跳转到其他页面 并且可以通过url参数进行页面间的参数传递 而在web view页面中 可以通过url的query参数进行参数传递 下面是一个示例
  • 什么是springboot

    Spring Boot是由Pivotal团队提供的全新框架 其设计目的是用来简化Spring应用的创建 运行 调试 部署等 使用Spring Boot可以做到专注于Spring应用的开发 而无需过多关注XML的配置 Spring Boot使

随机推荐

  • csdn 代码样式 代码高亮 代码风格

    刚玩csdn 结果发现博客帮助里没有教这个 就写了一下 希望可以帮到一些和我一样的新手 在文章的富文本内 选择源代码后 在源代码中编辑即可 修改下文中的class可以进行多种样式风格的支持 如html c javascript java c
  • 在ubuntu 20.04中安装mmSegmentation

    注 此教程是博主的学习笔记 基于pycharm软件进行学习 如有问题可以在评论区进行评论 目录 一 在pycharm中创建object segmentation虚拟环境 二 mmSegmentation配置与安装 一 mmSegmentat
  • 腾讯云16核服务器配置大全_CVM和轻量服务器汇总

    腾讯云16核CPU服务器有哪些配置可以选择 可以选择标准型S6 标准型SA3 计算型C6或标准型S5等 目前标准型S5云服务器有优惠活动 性价比高 计算型C6云服务器16核性能更高 轻量16核32G28M带宽优惠价3468元15个月 腾讯云
  • 组合式API- 1-Setup

    参数 使用 setup 函数时 它将接受两个参数 props context 第一个参数 Props setup 函数中的第一个参数是 props 正如在一个标准组件中所期望的那样 setup 函数中的 props 是响应式的 当传入新的
  • Keil转到Eclipse遇到的几个问题

    ARM下Keil转到Eclipse后的几个问题 Keil转战到Eclipse下 首先 Eclipse的交叉工具链的环境要进行设置 其次 在Keil中的Scatter file在Eclipse下要重新编写 最后 Eclipse的调试环境要进行
  • SQL7 查找年龄大于24岁的用户信息

    描述 题目 现在运营想要针对24岁以上的用户开展分析 请你取出满足条件的设备ID 性别 年龄 学校 用户信息表 user profile id device id gender age university province 1 2138
  • 网络通信TCP/UDP

    目录 1 TCP 通信 cs 模型 socket 函数 bind 函数 listen 函数 connect 函数 accept 函数 recv 函数 send 函数 close 函数 出现的问题解决 2 UDP 通信 sendto 函数 r
  • 10 个基本的 Python 编码约定

    10 个基本的 Python 编码约定 1 使用描述性变量名 2 遵循 PEP 8 标准 3 使用文档字符串记录函数 4 避免全局变量 5 DRY Don t Repeat Yourself 不要重复自己 6 使用列表表达式 7 使用异常进
  • 串口与普通IO口的区别

    General Purpose Input Output 通用输入 输出 简称为GPIO 或总线扩展器 人们利用工业标准I2C SMBus或SPI接口简化了I O口的扩展 当微控制器或芯片组没有足够的I O端口 或当系统需要采用远端串行通信
  • Linux SVN 搭建(YUM)安装

    原文地址 http www centoscn com CentosServer ftp 2014 0202 2409 html 安装说明 系统环境 CentOS 6 2 安装方式 yum install 源码安装容易产生版本兼容的问题 安装
  • 正则验证

    一 校验数字的表达式 数字 0 9 n位的数字 d 2 至少n位的数字 d n m n位的数字 d m n 零和非零开头的数字 0 1 9 0 9 非零开头的最多带两位小数的数字 1 9 0 9 0 9 1 2 带1 2位小数的正数或负数
  • 遍历dataframe中的某列,找出含有空格的元素

    工作上需要处理一个数据 把一个较大数据中的姓名列和账号列全部遍历一遍 然后看是否数据里面含有空格 一开始想法是用for循环 一行一行遍历df数据 这个方法效率太慢 搜索一下 有个博主发现了一个map函数 太厉害了 我直接用了 准备先贴我的代
  • IDEA中POM 项目parent中的dependencyManagement中的依赖版本号报红

    现象 IDEA中作为管理依赖的parent项目的pom文件中 在dependencyManagement中的dependency 如果指定的版本在本地仓库不存在 并且在子项目中也未引用的时候 会报红 疑惑 只是引用了很常见的依赖 并且版本官
  • 如何编写一个含有抄底信号的副图指标

    如果你作为通达信软件源代码的程序维护员 如何编写一个含有抄底提示的副图指标 请看下面的的示例教程 python语言 python 导入所需的库 import talib 计算移动平均线 def moving average data per
  • 【哈佛积极心理学笔记】第6讲 乐观主义

    第6讲 乐观主义 How can we create consciously and subconsciously a positive environment where we actually can take out the most
  • 小白学习一周 Linux命令

    文件系统管理相关命令 clear 清屏 pwd 打印当前工作目录 tmp 打开文件夹 cd 改变当前工作目录 mkdir 创建一个新文件夹 mkdir 在根目录下创建一个新文件夹 mkdir p 套娃创建文件夹 rmdir 删除当前目录下的
  • 图像数据处理 pytorch

    coding utf 8 Transfer Learning Tutorial Author Sasank Chilamkurthy
  • 双非计算机学硕报录比竟然有28:1?深圳大学20考研居然如此爆炸!

    深圳大学是一所双非大学 计算机学科评估B 软件工程学科评估没有 由于计算机实力在双非中很强 而且地处广东深圳 是信息行业和互联网行业比较发达的地区 因此深圳大学很受考生欢迎 但是深圳大学也很难考 深圳大学基本所有计算机相关专业都考408 这
  • 【Git】(一)基本操作

    读完本文后 您会了解 1 如何在本地配置GIT环境 2 环境配置成功后 如何从远端下载一个已有仓库到本地 1 配置全局用户名 邮箱 git config global user name username git config global
  • LeetCode 0198. House Robber

    问题简析 作为职业小偷 我要去打家劫舍 但是注意如果两家相邻房子在同一夜被打劫了 则会触发警报 现在给定一个非负整数构成的数列 代表连续的若干房屋中的财产数量 计算一晚上最多能偷多少钱 例如 nums 1 2 3 1 最大值为1 3 4 n