leetcode-1462. Course Schedule IV

这篇具有很好参考价值的文章主要介绍了leetcode-1462. Course Schedule IV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Description

There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take course ai first if you want to take course bi.

For example, the pair [0, 1] indicates that you have to take course 0 before you can take course 1.
Prerequisites can also be indirect. If course a is a prerequisite of course b, and course b is a prerequisite of course c, then course a is a prerequisite of course c.

You are also given an array queries where queries[j] = [uj, vj]. For the jth query, you should answer whether course uj is a prerequisite of course vj or not.

Return a boolean array answer, where answer[j] is the answer to the jth query.

Example 1:

leetcode-1462. Course Schedule IV

Input: numCourses = 2, prerequisites = [[1,0]], queries = [[0,1],[1,0]]
Output: [false,true]
Explanation: The pair [1, 0] indicates that you have to take course 1 before you can take course 0.
Course 0 is not a prerequisite of course 1, but the opposite is true.

Example 2:

Input: numCourses = 2, prerequisites = [], queries = [[1,0],[0,1]]
Output: [false,false]
Explanation: There are no prerequisites, and each course is independent.

Example 3:
leetcode-1462. Course Schedule IV

Input: numCourses = 3, prerequisites = [[1,2],[1,0],[2,0]], queries = [[1,0],[1,2]]
Output: [true,true]

Constraints:

2 <= numCourses <= 100
0 <= prerequisites.length <= (numCourses * (numCourses - 1) / 2)
prerequisites[i].length == 2
0 <= ai, bi <= n - 1
ai != bi
All the pairs [ai, bi] are unique.
The prerequisites graph has no cycles.
1 <= queries.length <= 104
0 <= ui, vi <= n - 1
ui != vi

Solution

Iterate through all nodes, and keep track of every node’s next nodes, use stack to iterate all possible next nodes.

Time complexity: o ( V ∗ E ) = o ( n ∗ n 2 ) o(V*E)=o(n*n^2) o(VE)=o(nn2)
Space complexity: o ( V ∗ E ) = o ( n ∗ n 2 ) o(V*E)=o(n*n^2) o(VE)=o(nn2)文章来源地址https://www.toymoban.com/news/detail-430377.html

Code

class Solution:
    def checkIfPrerequisite(self, numCourses: int, prerequisites: List[List[int]], queries: List[List[int]]) -> List[bool]:
        def build_graph(edges: list) -> dict:
            """
            Returns:
                {node: [next_node1, next_node2, ...]}
            """
            graph = {}
            for begin_course, next_course in edges:
                if begin_course not in graph:
                    graph[begin_course] = []
                graph[begin_course].append(next_course)
            return graph
        
        graph = build_graph(prerequisites)
        all_courses = {i: [] for i in range(numCourses)}
        for i in range(numCourses):
        	# need to use deepcopy, otherwise will change graph if stack.pop()
            stack = copy.deepcopy(graph.get(i, []))
            while stack:
                next_course = stack.pop()
                if next_course in all_courses[i]:
                    continue
                all_courses[i].append(next_course)
                stack += graph.get(next_course, [])
        res = []
        for u, v in queries:
            if v in all_courses[u]:
                res.append(True)
            else:
                res.append(False)
        return res

到了这里,关于leetcode-1462. Course Schedule IV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年03月14日
    浏览(111)
  • React16源码: React中的schedule调度整体流程

    schedule调度的整体流程 React Fiber Scheduler 是 react16 最核心的一部分,这块在 react-reconciler 这个包中 这个包的核心是 fiber reconciler,也即是 fiber 结构 fiber 的结构帮助我们把react整个树的应用,更新的流程,能够拆成每一个 fiber 对象为单元的一个更新的流程 这种单元的形式把更新

    2024年01月19日
    浏览(37)
  • python自动定时任务schedule库的使用方法

    当你需要在 Python 中定期执行任务时, schedule 库是一个非常实用的工具。它可以帮助你自动化定时任务。以下是一些使用示例: 基本使用 : 上面的代码表示每隔 10 分钟执行一次 job 函数,非常简单方便。 更多调度任务例子 : 只运行一次任务 : 参数传递给作业 : 获取目前

    2024年02月21日
    浏览(37)
  • 一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:SpringBoot实战 标题 一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码) 一张思维导图带你学会Springboot创

    2024年02月14日
    浏览(87)
  • Python中的定时器用法:Timer定时器和schedule库

    目录 一、引言 二、Timer定时器 1、Timer定时器的原理 2、Timer定时器的使用方法 3、Timer定时器的实际应用案例 三、schedule库 1、schedule库的原理 2、schedule库的使用方法 3、schedule库的实际应用案例 四、Timer定时器和schedule库的比较 1、功能差异 2、适用场景 五、实际应用案例 六、

    2024年01月16日
    浏览(72)
  • 关于“Loading PDSC Debug Description Failed”

    关于这个问题的弹窗报错网上也已经有了清晰的解决思路,就是更改软件目录下对应的.pdsc文件(譬如*/ARM/PACK/Keil/STM32F4XXXXXX/2.15.0/ Keil.STM32F4xx_DFP.pdsc )去掉该文件的只读属性,并根据Keil底部的build output内的提示找到对应行,删除该行的报错提示,保存文件。 Message(2, \\\"Not a

    2024年02月06日
    浏览(42)
  • Standford Compiler Course Assignment 1

    第一个作业是写一个词法分析的rule,词法分析对我帮助不大,主要是理解使用就可以,就大部分参照github上的实现了。 实验需要注意的内容: 1)cool/include/PA2/cool-parse.h 里面定义了需要处理的 实验的主要内容是在cool.flex中增加对,注释,嵌入注释,字符串的处

    2024年02月10日
    浏览(31)
  • dedecms织梦模板描述description长度限制修改方法

    seo优化各个搜索引擎收录Title,keywords,description长度最长多长 ? SEO网站优化中Title标签的作用为重中之重,好的Title也就成功了一半了。那么Title的长度到底多长才能合适呢? 搜索了一下网上的SEO资料,找到了一些关于各个搜索引擎对Title长度的要求,资料如下: 百度:60个字节

    2024年02月02日
    浏览(97)
  • ERROR:cannot load flash device description

    前言 :在移植他人 代码时,用keil5下载程序时有时会出现 cannot load flash device description的 问题,以下是解决方法: 此处,我是因为原本使用的是J-Link,改为ST-Link后,发生了报错。 通常,很多时候都是因为没有找到对应得flash 下载算法导致, 要选择正确的Flash Download 程序,型

    2024年02月09日
    浏览(41)
  • <van-empty description=““ /> 滚动条bug

    使用 van-empty description=\\\"\\\" / 时,图片出现了个滚动条,图片可以上下滑动。 代码如下: 尝试将 van-empty 外层包一层view,然后设置该view的css样式 overflow: hidden 发现不起作用。 导致这个问题的主要原因应该是图片高度比其父视图高导致的。 打开Wxml调试查看视图层: 这里是一个

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包