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 
                    
                
                
            
        
浙公网安备 33010602011771号