210. 课程表 II

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

  2. 解题思路:和[课程表Ⅰ](207. 课程表 - ouyangxx - 博客园)思路一致,只不过每次都要收集答案。

  3. 代码

    class Solution:
    class node:
    def __init__(self):
    self.pre = 0 # 要依赖几个
    self.nexts = set() # 能解锁哪些
    def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
    courses = {}
    cando = set(range(numCourses)) # 初始化,所有的课程都能够做
    for i in range(numCourses):
    courses[i] = self.node()
    for course in prerequisites:
    # course[0]不能先做 要先完成course[1]
    if course[0] in cando:
    cando.remove(course[0])
    courses[course[0]].pre += 1
    courses[course[1]].nexts.add(course[0])
    ans = []
    while cando:
    cur_course = cando.pop()
    ans.append(cur_course)
    for next_course in courses[cur_course].nexts:
    courses[next_course].pre -= 1
    if courses[next_course].pre == 0:
    cando.add(next_course)
    return [] if len(ans) != numCourses else ans
posted @   ouyangxx  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示