首页 > 其他分享 >1997. 访问完所有房间的第一天(中等)

1997. 访问完所有房间的第一天(中等)

时间:2024-04-01 19:45:44浏览次数:28  
标签:1997 第一天 int 房间 中等 len nextVisit dp MOD

核心思想
注意数据范围
0 <= nextVisit[i] <= i
也就是说 当前下标i只能去之前的地方
也就是说i+1 只能 通过 i 访问次数为偶数才能达到
定义 dp[i] 到达第i个房间的天数

那么要到达第i个房间的路径为
0 -> i-1 -> nextVisit[i-1] -> i-1 -> i
只有第二次达到i-1才能达到i

class Solution {
    public int firstDayBeenInAllRooms(int[] nextVisit) {
        final int MOD = (int) (1e9 + 7);
        int len = nextVisit.length;

        long[] dp = new long[len];
        dp[0] = 0;
        for(int i = 1; i < len; i++){
            dp[i] = (2 * dp[i - 1] - dp[nextVisit[i - 1]] + 2 + MOD) % MOD;
        }
        return (int) dp[len - 1];
    }
}

标签:1997,第一天,int,房间,中等,len,nextVisit,dp,MOD
From: https://www.cnblogs.com/ganyq/p/18109232

相关文章

  • 2642. 设计可以求最短路径的图类(中等)
    核心思想Dijkstra+堆优化模板题,每次查询做一次最短路查询即可。classGraph{privateList<int[]>[]nxt;publicGraph(intn,int[][]edges){nxt=newList[n];for(inti=0;i<n;i++){nxt[i]=newArrayList<>();......
  • 215. 数组中的第K个最大元素(中等)
    核心思想手写堆构建一个大顶堆,删除k-1个堆顶元素。为什么是size/2-1?考虑最后一个元素的下标size-1那么父节点为(size-1)/2classSolution{publicintfindKthLargest(int[]nums,intk){intsize=nums.length;buildHeap(nums,siz......
  • 2580. 统计将重叠区间合并成组的方案数(中等)
    核心思想先按第一个元素排序,原区间重合的合并为一个,计算合并完后的区间个数。每个区间都有2个选择,res不断乘2。classSolution{publicintcountWays(int[][]ranges){longres=1;finalintMOD=(int)(1e9+7);Arrays.sort(ranges,(......
  • 503. 下一个更大元素 II(中等)
    核心思想维护一个单调递减的单调栈(非严格)但是由于是循环的,做两次循环即可代码publicint[]nextGreaterElements(int[]nums){Deque<Integer>dq=newArrayDeque<>();int[]res=newint[nums.length];Arrays.fill(res,-1);for(int......
  • 【二叉树】Leetcode 437. 路径总和 III【中等】
    路径总和III给定一个二叉树的根节点root,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1:**输入:**root=[10,5,-3,3,2,null,11,3,......
  • jg学习嵌入式(embadded)的第一天
    学习嵌入式(embadded)的第一天C语言运行机制流程编写源文件->预处理->编译(得到汇编文件)->汇编(得到目标文件)->与库文件进行连接(得到可执行文件)->执行标识符(一切程序员自己定义的变量)规范强制规范严格区分大小写只能用英文或数字和下划线组成不能以数字开头不能是关......
  • C++入门————第一天
    1、命名空间     在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。  1......
  • 基于HarmonyOS的阅读笔记助手的APP开发第一天
    1.设计原型书籍界面原型书籍阅读界面原型笔记界面原型笔记记录界面原型软件设置界面原型......
  • 鸿蒙TypeScript入门学习第一天【简单介绍】
    1.TypeScript教程TypeScript是JavaScript的一个超集,支持ECMAScript6标准()。TypeScript由微软开发的自由和开源的编程语言。TypeScript设计目标是开发大型应用,它可以编译成纯JavaScript,编译出来的JavaScript可以运行在任何浏览器上。2、语言特性TypeScript是......
  • 每天30分钟python(第一天)
    1.input1.规则input输入的是字符串2.print打印规则:整数不能与文字一起打印,但是字符串可以,所以将文字转换为字符串即可print("小明今年"+str(5)+"岁了")代码实践:错误代码:#实现BMI=体重/(身高**2)user_weiight=input("请输入体重")user_height=input("请输入身高......