210. 课程表 II
-
[题目链接](210. 课程表 II - 力扣(LeetCode))
-
解题思路:和[课程表Ⅰ](207. 课程表 - ouyangxx - 博客园)思路一致,只不过每次都要收集答案。
-
代码
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
标签:
leetcode刷题
, 数据结构与算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)