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

本文介绍了LeetCode周赛中的第1997题,讨论如何在动态规划框架下解决访问所有房间的问题。通过分析题目中关于访问次数的奇偶性规则,提出两种解题思路:备忘录法和前缀和优化法,详细解析了每种方法的逻辑,并给出了优化理由。
摘要由CSDN通过智能技术生成

今天分享周赛遇到的一道题(257周赛第3题),这道题在比赛时第一次见到时直接就懵了,不知道从何做起,知道是动态规划却推不出转移方程,比赛结束补题发现是一道很有意思的题目,值得记录一下。

访问完所有房间的第一天

你需要访问 n 个房间,房间从 0n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。

最开始的第 0 天,你访问 0 号房间。给你一个长度为 n下标从 0 开始 的数组 nextVisit 。在接下来的几天中,你访问房间的 次序 将根据下面的 规则 决定:

  • 假设某一天,你访问 i 号房间。
  • 如果算上本次访问,访问 i 号房间的次数为 奇数 ,那么 第二天 需要访问 nextVisit[i] 所指定的房间,其中 0 <= nextVisit[i] <= i
  • 如果算上本次访问,访问 i 号房间的次数为 偶数 ,那么 第二天 需要访问 (i + 1) mod n 号房间。

请返回你访问完所有房间的第一天的日期编号。题目数据保证总是存在这样的一天。由于答案可能很

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值