动态规划12:213. 打家劫舍 II

news2024/11/19 0:25:29

动态规划解题步骤:

1.确定状态表示:dp[i]是什么

2.确定状态转移方程:dp[i]等于什么

3.初始化:确保状态转移方程不越界

4.确定填表顺序:根据状态转移方程即可确定填表顺序

5.确定返回值

题目链接:213. 打家劫舍 II - 力扣(LeetCode)

 题解:

本题实际上就是分两种情况,每种情况在不同的区间中进行打家劫舍1算法

1.状态表示:f[i]表示最后一间房屋为nums[i]并且偷的最高金额;g[i]表示最后一间房屋为nums[i]并且偷的最高金额

2.状态转移方程:f[i]=nums[i]+g[i-1]   g[i]=max(f[i-1],g[i-1])

3.初始化:这要分情况初始化,根据是否偷第一间房子分为两种情况。偷第一间房子则f[0]=nums[0]  g[0]=0;不偷第一间房子则f[0]=g[0]=0

4.填表顺序:从左向右填写,两个表一起填

5.返回值:取两种情况的最大金额

class Solution {
public:
    int rob(vector<int>& nums) {
        //f[i]表示最后一间房屋为nums[i]并且偷的最高金额
        //g[i]表示最后一间房屋为nums[i]并且偷的最高金额
        //f[i]=nums[i]+g[i-1];
        //g[i]=max(f[i-1],g[i-1])

        size_t n=nums.size();
        //处理边界条件
        if(n==1)
            return nums[0];
        if(n==2)
            return max(nums[0],nums[1]);
        //创建dp表
        vector<int> f(n);
        auto g=f;
        //分情况
        int ret1=0;
        int ret2=0;
        //情况1:偷第一间屋子
        //初始化
        f[0]=nums[0];
        g[0]=0;
        for(int i=2;i<n-1;++i)
        {
            f[i]=nums[i]+g[i-1];
            g[i]=max(f[i-1],g[i-1]);
        }
        ret1=nums[0]+max(f[n-2],g[n-2]);
        //情况2:不偷第一间屋子
        //初始化
        f[0]=g[0]=0;
        for(int i=1;i<n;++i)
        {
            f[i]=nums[i]+g[i-1];
            g[i]=max(f[i-1],g[i-1]);
        }
        ret2=max(f[n-1],g[n-1]);
        return max(ret1,ret2);
    }
};

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

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

相关文章

DAMA数据管理知识体系(第15章 数据管理成熟度评估)

课本内容 15.1 引言 概要 能力成熟度评估&#xff08;Capability Maturity Assessment&#xff0c;CMA&#xff09;是一种基于能力成熟度模型&#xff08;Capability Maturity Model&#xff0c;CMM&#xff09;框架的能力提升方案&#xff0c;描述了数据管理能力初始状态发展到…

怎么将手机备忘录传送至电脑

在数字化时代&#xff0c;手机备忘录已成为我们生活中不可或缺的一部分。无论是记录购物清单、工作事项&#xff0c;还是灵感闪现的瞬间&#xff0c;手机备忘录都能随时记录下这些宝贵的信息&#xff0c;帮助我们防止遗忘。然而&#xff0c;有时候我们需要将这些备忘录内容转移…

IPSeizer/Zenmap 查看内网哪些ip没有被占用

下载IPSeizer, 无需安装直接双击打开使用&#xff0c;填入需要的网段&#xff0c;点start查询 或者使用Zenmap&#xff0c;指定范围和端口号

LSTM(长短时记忆网络)

一、引言 在处理序列数据时&#xff0c;循环神经网络&#xff08;RNN&#xff09;虽然能够处理序列数据并保留历史信息&#xff0c;但在实践中发现它对于捕捉长时间依赖关系的能力有限&#xff0c;尤其是在训练过程中容易遇到梯度消失或梯度爆炸的问题。为了解决这些问题&…

《Oracle DB备份与恢复》开篇:一切从Oracle Incarnation开始

题记&#xff1a;从本篇开始&#xff0c;我将为大家介绍Oracle DB备份与恢复。备份恢复是DBA的核心工作&#xff0c;重在实操&#xff0c;多加练习&#xff0c;模拟各种DB或实例崩溃的场景。不同于一些博主一出场就讲如何备份恢复&#xff0c;我将从备份的源头原理开始介绍。本…

科研必备降重画图工具

科研必备降重工具 1. Quillbot 链接&#xff1a;https://quillbot.com/ 2. paperyy 链接&#xff1a;https://www.paperyy.com/ 3、秘塔写作猫 链接&#xff1a;https://xiezuocat.com/#/ 4. DeepL 链接&#xff1a;https://www.deepl.com/translator 科研必备画图工具 1…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享11

4.7 安全架构&#xff08;掌握&#xff09; 安全保障以风险和策略为基础&#xff0c;在信息系统的整个生命周期中&#xff0c;安全保障应包括技术、管理、人员和工程过程的整体安全&#xff0c;以及相关组织机构的健全等。 4.7.1 安全威胁&#xff08;掌握&#xff09; 常见的…

ZigMa: A DiT-style Zigzag Mamba Diffusion Model

ZigMa: DiT风格之字形Mamba扩散模型 论文链接&#xff1a;https://arxiv.org/abs/2403.13802 项目链接&#xff1a;https://taohu.me/zigma/ Abstract 扩散模型长期以来一直受到可扩展性和二次复杂度问题的困扰&#xff0c;特别是在基于Transformer的结构中。在本研究中&…

第38讲:Ceph分布式存储集群部署

文章目录 1.Ceph分布式存储集群安装方式2.Ceph集群环境规划3.基础环境配置3.1.设置主机名以及SSH免密登录3.2.配置Ceph yum源 4.部署Ceph分布式存储集群4.1.安装Ceph-deploy自动化部署工具4.2.初始化创建一个Ceph分布集群4.3.在每个节点中部署Ceph集群所有的组件4.4.部署并配置…

【在Linux世界中追寻伟大的One Piece】DNS与ICMP

目录 1 -> DNS(Domain Name System) 1.1 -> DNS背景 2 -> 域名简介 2.1 -> 域名解析过程 3 -> 使用dig工具分析DNS 4 -> ICMP协议 4.1 -> ICMP功能 4.2 -> ICMP报文格式 4.3 -> Ping命令 4.4 -> traceroute命令 1 -> DNS(Domain Na…

【JS】判断快乐数

思路 这里主要是需要熟悉对取值各个位数上的单数操作&#xff0c;也就是数字拆分方法&#xff1a; 转化为字符串&#xff0c;使用split方法 // 将数字转换为字符串&#xff0c;以便拆分为单个数字 let arr ( (totalCount || n)).split(); 使用数学运算符 let sum 0; // 初始…

hgkhjhkj

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

Android Media3 1.4.0 新特性解析

Android Media3 1.4.0 新特性解析 Media3 1.4.0 的发布为 Android 开发者带来了众多重要的新特性和增强功能,进一步提升了媒体播放体验。本文将详细介绍该版本中的关键更新,涵盖 ExoPlayer 预载工具、HDR 支持的改进、字幕处理优化、PlayerView 中的图像支持,以及 MediaSes…

GAMES104:16 游戏引擎的玩法系统:基础AI-学习笔记

文章目录 一&#xff0c;寻路/导航系统Navigation1.1 Walkable Area1.1.1 Waypoint Network1.1.2 Grid1.1.3 Navigation Mesh1.1.4 Sparse Voxel Octree 1.2 Path Finding1.2.1 Dijkstra Algorithm迪杰斯特拉算法1.2.2 A Star&#xff08;A*算法&#xff09; 1.3 Path Smoothin…

Docsify搭建个人博客

前提&#xff1a;电脑安装了Node.js 安装到本地 CMD命令下输入node -v查看是否已经安装了Node.js 安装docsify-cli工具&#xff1a;npm i docsify-cli -g 使用git下载docsify-Plus项目&#xff0c;Gitee地址&#xff1a;https://gitee.com/librarycodes/docsify-plus cd…

基于SpringBoot的国家基础信息管理功能的设计与实现

目录 前言 一、标准信息参考 1、信息来源 二、后台基础信息的维护管理 1、实体类和Mapper类 2、业务层和控制层设计 3、前端界面实现 三、管理页面效果 1、列表管理界面 2、国家信息调整 四、总结 前言 在之前的博客中&#xff0c;我们基于GeoTools工具实现了全球各个…

Base64字符串转图片在线工具

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本原理 Base64编码&#xff0c;作为一种将二进制数据转换为文本格式的方法&#xff0c;其核心在于利用64个可打印字符来表征任意的二进制信息。这一编码方式的出现&#…

应急响应:DHCP$DNS劫持实战

目录 DHCP DHCP安全性&#xff1a; DHCP常见的攻击手段&#xff1a; DNS DNS常见的攻击方式&#xff1a; DNS&DHCP攻击实战演练&#xff1a; 环境配置&#xff1a; 利用&#xff1a; 排查&#xff1a; 防御&#xff1a; DHCP 介绍&#xff1a; DHCP&#xff08;…

【Redis】Set类型的常用命令与应用场景

目录 1.命令小结 2.命令解析 3.编码方式与应用场景 1.命令小结 &#xff08;1&#xff09;set的特点 1&#xff09;set中存放的数据也都是String类型 2&#xff09;set集合中的元素是无须的 3&#xff09;set集合中的元素是唯一的&#xff0c;不可重复 &#xff08;2&a…

苦瓜检测系统源码分享

苦瓜检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision 研究…