Leetcode1997. 访问完所有房间的第一天

LeetCode 1997 - 访问完所有房间的第一天 这道题属于图论问题,结合了多源 BFS、最短路径问题以及动态规划的思想。问题核心在于如何建模图中房间的访问时间并找到所有房间。问题要求返回:所有房间被访问的最小时间(换句话说,找到其中最晚被访问的房间需要花费的最小时间)。由于这道题较新,常规题解与其变体涉及多种图算法,以下是详细解法分析及模板。通过针对这些思想的练习,可以快速应对图扩展以及最短路径相关的题目! 阅读详情

Every day a Leetcode

题目来源:1997. 访问完所有房间的第一天

解法1:动态规划

在这里插入图片描述

状态转移:

在这里插入图片描述

代码:

/*
 * @lc app=leetcode.cn id=1997 lang=cpp
 *
 * [1997] 访问完所有房间的第一天
 */

// @lc code=start
class Solution
{
private:
    const int mod = 1e9 + 7;

public:
    int firstDayBeenInAllRooms(vector<int> &nextVisit)
    {
        int n = nextVisit.size();
        // dp[i]: 从 0 号房间出发首次到 i+1 花费的天数
        vector<int> dp(n);
        // 初始化
        dp[0] = 2; // 初始化原地待一天 + 访问下一个房间一天
        // 状态转移
        for (int i = 1; i < n; i++)
        {
            int to = nextVisit[i];
            dp[i] = 2 + dp[i - 1];

            if (to != 0)
            {
                dp[i] = (dp[i] - dp[to - 1] + mod) % mod; // 避免负数
            }
            dp[i] = (dp[i] + dp[i - 1]) % mod;
        }
        return dp[n - 2]; // 题目保证n >= 2
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nextVisit 的元素个数。

空间复杂度:O(n),其中 n 是数组 nextVisit 的元素个数。

【动态规划 前缀和】1997. 访问完所有房间的第一天|2260 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 nextVisit 。在接下来的几天中,你访问房间的 次序 将根据下面的 规则 决定: 假设某一天,你访问 i 号房间。 如果算上本次访问,访问 i 号房间的次数为 奇数 ,那么 第二天 需要访问 nextVisit[i] 所指定的房间,其中 0 阅读详情

相关推荐

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6197

[LeetCode] 1997. 访问完所有房间的第一天

现在我们回到 i ,此时我们到了 i ,但是此时为奇数次,我们发生回退,回退到哪里呢?这题问的很奇怪,其实就是问你什么时候到达最后一个房间,我们所经过的房间都是一点一点增长的,不可能直接跳跃的去到某个房间,,所以说所有的新房间都是一点一点的爬过去的,当你爬完所有的房间至少一遍就是到了访问第n-1个房间。此时我们发现,这就和我们第一次到达j的情况一模一样,同时j的前面访问了偶数次,后面也访问了偶数次。而我们到达新房间的唯一途径就是当到达某个房间偶数次时,我们就可以到达下一个新房间。(此时已经刚刚到j)

2303_80376941的博客 591

如何将rvt(BIM)转换为点云格式

1、为什么将BIM转换为点云格式? 如何使设计BIM与真实场景进行配准,分析在建、未建、已建构建的情况,真实场景是通过点云生产的,和点云配准需要相同的格式。 2、如何转换? 实用工具revit,转换过程如下图,这样就可以转换成三角网格形式。 3、FBX还需要进行一次转换,即转换成点云常用的类型,如bin\ply\pcd等格式。 需要软件cloudcompare.exe,软件下载地址百度云 链接:https://pan.baidu.com/s/1pflcKNc04loBnS1yKR39hw 提取码:obaf

self_Name_的博客 4492

LeetCode 1997. 访问完所有房间的第一天

Leetcode 每日一题记录

Don_tknowwhat的博客 1152

RU.EXE实用指南:从基础操作到高级调试技巧

本文是RU.EXE(RW Everything)的实用指南,详细介绍了这款硬件调试工具从基础操作到高级技巧的全过程。文章阐述了RU.EXE作为直接读写硬件寄存器、内存和PCI配置空间的强大工具,如何帮助硬件工程师和开发人员高效进行底层系统调试与故障排查,并强调了安全操作的重要性。

weixin_29228203的博客 283

一文读懂客户健康度

什么是客户健康度?客户健康度为什么重要?怎么计算客户健康度?这篇文章,我们来聊聊。

m0_62700043的博客 1420

LeetCode——1997. 访问完所有房间的第一天(First Day Where You Have Been in All the Rooms)[中等]——分析及代码(Java)

LeetCode——1997. 访问完所有房间的第一天[First Day Where You Have Been in All the Rooms][中等]——分析及代码[Java]一、题目二、分析及代码1. 动态规划(1)思路(2)代码(3)结果三、其他 一、题目 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始

江南土豆的博客 369

txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)

当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。

m0_59216200的博客 1820

[leetcode] 1997-访问完所有房间的第一天

今天分享周赛遇到的一道题(257周赛第3题),这道题在比赛时第一次见到时直接就懵了,不知道从何做起,知道是动态规划却推不出转移方程,比赛结束补题发现是一道很有意思的题目,值得记录一下。 访问完所有房间的第一天 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 nextVisit 。在接下来的几天中,你访问房间的 次序 将根据下面的

Chris_Eddy的博客 294

如何在 SAP BTP 上通过 CDS view 快速创建 Fiori Elements 应用

本文基于 SAP Business Technology Platform 的 ABAP 编程环境进行的开发。 使用 ABAP Development Tool 登录 SAP BTP ABAP 编程环境,新建一个 package,命名为 Z_JERRY_CDS. 右键选中该 package,创建一个新的 Consumption view. 该视图是一个消费视图,它基于业务对象 (BO) 视图 /DMO/I_TRAVEL_U,提供了独立于消费层的给定数据模型。 它包含在其上运行的应用程序所需的所有核心信息。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2031

广东省道路工程检测练习试题(单选题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。A.不低于75%B.不低于80%C.不低于85%D.不低于90%答案:B2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( )A.1B.2C.3D.4答案:A3.根据《城镇道路工程施工与质量验收规范》,在分部工程中,根据工种、材料、施工工艺等划分的是( )A.单位工程B.分项工程C.分部工程D.工序工程答案:B4.根据《城镇道路工程施工与质量验收规范》,土方路基压实度的检测频率为每1000m每压实层抽检( )

ZShy001238的博客 686

LeetCode:1997. 访问完所有房间的第一天(DP Java)

我愿称之为,虽然我每接近你一步,轮回的次数就会变多,但是我任然想不断的靠近你,即使每次回溯我都要再花费更长的时间重复经历一遍。

Cosmoshhhyyy的博客 979

车载网络测试实操源码_使用CAPL脚本进行UDS刷写及其自动化测试

本文主要讲解如何使用CAPL脚本进行UDS刷写及其自动化测试,并结合了几个测试实例进行介绍,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1557

Leetcode-1997-访问完所有房间的第一天-c++

题目详见tonextvisiti第一次到i之后回退到的位置fi从奇数次到i到奇数次到i1所需要的天数dpi从0号房间出发到i1号房间所需要的天数首次到第i+1个房间dpiiiTdpi−1inextVisitiT1nextVisiti−1iTdpi−1−dpnextvisiti−1]]iii1T1综上dpidpi−11dp。

LinShaoQINg's_bloGGGGG 703

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

leetcode 1997.访问完所有房间的第一天

因为你在第一次访问第i间房子之后,你需要回访,然后再回来的时候才会访问偶数次,也就是访问了2次,也就是两天,其他的那些和,其实就是你回访其他房间所用的时间。那么我们可以推知,从第j间房子访问到第i间房子的总天数就是f[i]=f[j]+f[j+1]+...+f[i-1]+2.那么,就这样推下去的话:s[1]=f[0],s[2]=f[1]+f[0]......s[i+1]=f[i]+s[i]而我们上面写的f[i]也就可以化简为:f[i]=s[i]-s[j]+2,我们把这两个式子结合一下,这就是f[i]的含义。

m0_73917165的博客 452

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

记忆化搜索&动态规划,LeetCode 1997. 访问完所有房间的第一天

如何优化子问题

EQUINOX1的博客 388

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode:1997. 访问完所有房间的第一天【跳跃dp】

分奇偶的跳跃注意next只能回跳意味着i必须由i-1来到然后还有一个就是中间全偶数可以当作从来未跳(状态等价)https。

小楼一夜听春雨 331

LeetCode 1997.访问完所有房间的第一天:动态规划(DP)——4行主要代码(不需要什么前缀和)

LeetCode 1997.访问完所有房间的第一天:动态规划(DP)——4行主要代码(不需要什么前缀和) 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 nextVisit 。在接下来的几天中,你访问房间的 次序 将根据下面的 规则 决定: 假设某一天,你访问 i 号房间。 如果算上本次访问,访问 i 号房间的次数为 奇数

<font color="Pink">Tisfy的博客</font> 1328

LeetCode第257场周赛

我的第八次LeetCode周赛心情第一题(统计特殊四元组)第二题(访问完所有房间的第一天)第三题(访问完所有房间的第一天)第四题(数组的最大公因数排序) 心情 题目在此 又麻了???? 第一题(统计特殊四元组) 题意简单:直接四重循环暴力 class Solution { public: int countQuadruplets(vector<int>& nums) { int n = nums.size(); int res = 0;

欢迎来到我的世界 379

1997. 访问完所有房间的第一天

本题巧妙地利用动态规划,将复杂的跳转模拟简化成递推公式,避免了大规模的时间模拟。关键在于理解访问次数的奇偶性如何影响访问顺序。利用前面访问的结果dp计算后续房间访问天数。时间和空间复杂度均为 O(n),适合 n 达到 10^5 的场景。

Lucy_wzw的博客 959

2024.3.28力扣每日一题——访问完所有房间的第一天

2024.3.28 力扣每日一题 访问完所有房间的第一天 模拟 动态规划

weixin_42075274的博客 629

动态规划--访问完所有房间的第一天

以下用 to 代表 nextVisit[i],回退到房间 to 时是奇数次访问,又需要花费 f[to] 才会到达房间 to+1。分析题意发现 nextVisit[i] 的范围属于 [0,i],意味着当你首次到达房间 i 时会回退到房间 nextVisit[i]。而只有访问过该房间偶数次时才会到达下一个房间,进而推断出到达 i 时,[0,i) 的房间已经被访问过偶数次。你每天访问房间的次序是 [0,0,1,0,0,1,2,...]。你每天访问房间的次序是 [0,0,1,1,2,2,3,...]。

qq_54481628的博客 933

LeetCode 每日一题 Day 116-122

输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],[0,0,0,0,0,null,null,0,0]]例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。给你一个下标从 0 开始的整数数组 coins,表示可用的硬币的面值,以及一个整数 target。

m0_73814009的博客 1042

【Leetcode】1997. First Day Where You Have Been in All the Rooms

问访问完所有房间至少需要多少多少步。可以证明所有房间都会访问完。,中间的房间一定都要走过。步,要么是回头,所以容易知道如果要从。如果是偶数次,则下一步会访问。号房间,那么下一步你会访问。如果你是第奇数次访问。因为每一步要么是向右走。号房间,再给定一个长。

数学、算法爱好者的博客 1071

2024.3.28每日一题

请返回你访问完所有房间的第一天的日期编号。题目数据保证总是存在这样的一天。由于答案可能很大,返回对。你每天都会访问一个房间。同时,每一天都有一个日期编号,从。在接下来的几天中,你访问房间的。

ysk_0904的博客 373
上一篇: 基于 FFmpeg 和 SDL 的音视频同步播放器
下一篇: Leetcode 第 388 场周赛题解
UestcXiye
博客等级 码龄8年 9031粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值