首页 > 编程语言 >207. 课程表-python

207. 课程表-python

时间:2024-05-06 10:25:17浏览次数:27  
标签:prerequisites 207 python indegree numCourses course zero 课程 课程表

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。

例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。
请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。

示例 1:

输入:numCourses = 2, prerequisites = [[1,0]]
输出:true
解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。
示例 2:

输入:numCourses = 2, prerequisites = [[1,0],[0,1]]
输出:false
解释:总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。

class Solution:
    def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
        #构建邻接表和入度数组
        graph = [[] for _ in range(numCourses)]
        indegree=[0]*numCourses
        for pair in prerequisites:
            course,prerequisite=pair[0],pair[1]
            graph[prerequisite].append(course)
            indegree[course]+=1
        
        #初始化入度为0的集合
        zero_indegree_course=[]
        for i in range(numCourses):
            if indegree[i]==0:
                zero_indegree_course.append(i)

        #拓扑排序
        while zero_indegree_course:
            course=zero_indegree_course.pop()
            for success in graph[course]:
                indegree[success]-=1
                if indegree[success]==0:
                    zero_indegree_course.append(success)

        #判断是否完成所有课程的学习
        for i in range(numCourses):
            if indegree[i]!=0:
                return False
        return True

标签:prerequisites,207,python,indegree,numCourses,course,zero,课程,课程表
From: https://www.cnblogs.com/donghao99/p/18174387

相关文章

  • python雨滴数浓度计算
    前面已经将32×32的数据删除了不需要的列,数据变成了32×21的数据excel的粒径为了匹配txt的32行数据,我进行了重复复制,将excel变成下图: 那么采用数浓度公式:代码:#-*-coding:utf-8-*-"""@author:SuYue@file:shunongdu.py@time:2024/04/30@desc:"""importnumpya......
  • pipenv-基本使用手册 解决python包版本冲突
    https://pipenv.pypa.io/python使用pip安装包,默认都是在全局包,当A项目使用openai0.29,B项目使用openai1.10,这个时候,就会出现两个项目只能运行一个的情况。如果安装1.10,会把原来0.29的版本更新掉,导致原来A项目就运行不了。刚接触python,很好奇为啥没有像npm一样的......
  • python 打印 ASCII表
    ASCII表+------+------+------+------+---------------------------------+|Dec|Hex|Oct|Char|Description|+------+------+------+------+---------------------------------+|0|00|000||NUL(nullterminator)......
  • async await(python)
    简单记录一下asyncawait在Python中的用法以洗衣机洗衣服为例,假设有3台洗衣机,每台洗衣机都需要洗一些衣服一种做法就是依次启动每一台洗衣机,当一台洗衣机结束任务后,开始下一台fromtimeimportsleep,timedeflaundry():defwasher1():print('washeronebeg......
  • 利用python爬取某壳的房产数据
    以无锡的某壳为例进行数据爬取,现在房子的价格起伏很快,买房是人生一个大事,了解本地的房价走势来判断是否应该入手。(建议是近2年不买,本人在21年高位抛了一套房,基本是通过贝壳数据判断房价已经到顶,希望此爬虫能够帮到各位。)这里只爬了必看好房的数据,贝壳有放抓机制,无法跑全所有数据......
  • Mac更新python3.12 解决pip3安装报错
    Mac使用homebrew更新了python3.12,删除了以前的版本和pip3安装软件时候报错。error:externally-managed-environment×Thisenvironmentisexternallymanaged╰─>ToinstallPythonpackagessystem-wide,trybrewinstallxyz,wherexyzisthepackageyouare......
  • python交教程4:文件操作
    文件操作流程人类操作一个word流程:1、找到文件、双击打开2.读或修改3.保存&关闭⽤python操作⽂件也差不多: 只读模式 创建模式 追加模式 遍历文件 图片视频--二进制文件 其他方法 打开文件--混合模式 ......
  • 精通-Python-正则表达式(全)
    精通Python正则表达式(全)原文:zh.annas-archive.org/md5/3C085EA0447FEC36F167335BDBD4428E译者:飞龙协议:CCBY-NC-SA4.0前言自计算机科学迈出第一步以来,文本处理一直是最重要的话题之一。经过几十年的研究,我们现在拥有了最多才多艺和无处不在的工具之一:正则表达式。验证、......
  • Python全栈开发
    【Python初级】【一】计算机基础【二】编程语言和Python语言介绍【三】Python解释器和Pycharm的按照【四】常量和变量【五】垃圾回收机制【六】基本数据类型【七】程序与用户交互【八】基本运算符【九】流程控制语句【Python中级】【一】数据类型的内置方法【二】可变......
  • VScode和python解释器
    VScode下载https://code.visualstudio.com/安装VScode找到下载的.exe文件,以管理员身份运行勾选我同意此协议,点击下一步修改安装路径,最好放在C盘以外的盘,点击下一步默认即可,点击下一步勾选如下图所示条目即可,点击下一步点击下一步等待安装完成下载Python解释器......