首页 > 其他分享 >207. 课程表

207. 课程表

时间:2025-01-09 16:33:50浏览次数:1  
标签:pre cource 207 cources self cando add 课程表

  1. [题目链接](207. 课程表 - 力扣(LeetCode))

  2. 解题思路:拓扑排序。有一个可以完成的课程集合set1,有一个需要完成的课程集合set2。每次从set1中拿出一个课程,然后把其影响的节点的入度减减,如果减成了0,则该节点,变成了可以完成的课程,加入set1。依次做下去,如果set2空了,代表全部都完成了,如果set1空了,set2没空,那么就不能完成

  3. 代码

    
    class Solution:
    
        class node:
            def __init__(self, key, pre):
                self.key = key
                self.pre = pre
                self.nexts = set()
    
        def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
            cources = {}
            need_do = set()
            cando = set()
            for cource in prerequisites:
                # cource[0] 就是不能完成的   cource[1]就是可以先完成的
                if cource[0] not in cources:  # 第一次出现这个课程
                    new_cource = self.node(cource[0], 1)
                    cources[cource[0]] = new_cource
                    need_do.add(cource[0])
                else:
                    cources[cource[0]].pre += 1
                    if cource[0] in cando:
                        cando.remove(cource[0])
                        need_do.add(cource[0])
    
                if cource[1] not in cources:
                    new_cource = self.node(cource[1], 0)
                    new_cource.nexts.add(cource[0])
                    cources[cource[1]] = new_cource
                    cando.add(cource[1])
                else:
                    cources[cource[1]].nexts.add(cource[0])
            while cando:
                if not need_do:
                    return True
                cur_cource = cando.pop()
                for next_cource in cources[cur_cource].nexts:
                    cources[next_cource].pre -= 1
                    if cources[next_cource].pre == 0:
                        cando.add(next_cource)
                        need_do.remove(next_cource)
            return not need_do
    

标签:pre,cource,207,cources,self,cando,add,课程表
From: https://www.cnblogs.com/ouyangxx/p/18662373

相关文章

  • 22207321-王郅坚-第三次BLOG
    前言这两次电器控制系统的开发迭代,涵盖了不同的编程知识点、设计思路与系统逻辑。第一次迭代实现了一个基础的电器控制系统,通过简单的电器类型和基本操作设置,实现了电器状态的管理与切换。这一阶段主要考察基本数据结构的使用、输入输出处理、以及简单的判断与循环逻辑。为了提升......
  • 南昌航空大学-软件学院-22207112-卢翔-JAVAPTA(7-8)博客
    目录前言PTA第七次作业设计与分析题目分析知识点解析调试过程改进建议PTA第八次作业设计与分析题目分析知识点解析调试过程改进建议踩坑心得总结学期总结前言PTA第七次作业设计与分析题目分析本题在家居强电电路模拟程序-2基础上新增了多个并联电路串联在一起的情况。需要虑......
  • 207、无题
    207、无题唐●李商隐相见时难别亦难,东风无力百花残。春蚕到死丝方尽,蜡炬成灰泪始干。晓镜但愁云鬓改,夜吟应觉月光寒。蓬山此去无多路,青鸟殷勤为探看。 【现代诗意译】相见的机会是那么的难得,分别时也依依不舍,东风柔弱无力,百花纷纷凋谢,真是让人伤感啊。 我对你的情......
  • DTS207TC Database Development and Design
    Modulecodeand TitleDatabase Developmentand Design ( DTS207TC)SchoolTitleSchoolofAIandAdvanced ComputingAssignmentTitle002:AssessmentTask 2 (CW)Submission Deadline23:59, 24th Dec (Friday)Database Deve......
  • DTS207TC Database Development and Design
    Modulecodeand TitleDatabase Development and Design (DTS207TC)SchoolTitleSchoolofAIandAdvancedComputingAssignmentTitle001: Assessment Task 1(CW)Submission Deadline23:59, 15th Dec (Friday)FinalWord Cou......
  • 每日一道算法题之拓扑排序之课程表
    importjava.util.ArrayList;importjava.util.Deque;classSolution{publicint[]findOrder(intnumCourses,int[][]prerequisites){//思路:入度为0的点入队。依次出队的时候。遍历当前点的指向。入度减1,//如果入度为0.进队。//队......
  • 《赛博朋克2077》:官方中文版,V2.13版本+‘往日之影’DLC,全DLC内容,新版修改器
    《赛博朋克2077》:官方中文版,V2.13版本+‘往日之影’DLC,全DLC内容,新版修改器《赛博朋克2077》是一款深受玩家喜爱的开放世界动作冒险角色扮演游戏,现在官方中文版已更新至V2.13版本,并包含备受期待的‘往日之影’DLC以及全部DLC内容。玩家可以体验到更加丰富的游戏世界和剧情。版......
  • 20241207听课-解决存在的问题-去学-弄明白-问通义千问
    20241207听课-解决存在的问题-去学-弄明白-问通义千问--跟着博主行一努力,学。她一天至少学10h+,直播学习。做一行,爱一行。先做出点成绩再说啊!努力呗!【软件测试第一篇_测试理论_Linux数据库_超详细教程】https://www.bilibili.com/video/BV1bg411V7pp/?p=2&share_source=copy_......
  • [鲜花] Dbt 1207.
    每一个时刻都是一种独特的记忆,串起来就是一部回忆录。翻开它就像在看一场戏剧,主演是曾经的我自己,只是我已经完全不能和他产生共鸣——台上的悲伤、愤怒、快乐、兴奋我都只是一笑而过,里面没有什么值得我把它带出舞台之外的东西了,我只是把它当作一种消遣,自我回忆或和他人分享,让所有......
  • 力扣 630课程表iii
     原题链接题解反悔贪心,或者说是贪心+优先队列。code classSolution{public:staticboolcmp(vector<int>a,vector<int>b){if(a[1]!=b[1])returna[1]<b[1];returna[0]<b[0];}intscheduleCourse(vector<vector<int>......