题目描述:


第一次提交:
class Solution: def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]: indegree = [0 for _ in range(numCourses)] adj = [[] for _ in range(numCourses)] for cur,pre in prerequisites: adj[pre].append(cur) indegree[cur] += 1 res = [] queue = [] for i in range(numCourses): if indegree[i] == 0: queue.append(i) while queue: i = queue.pop(0) res.append(i) for j in adj[i]: indegree[j] -= 1 if indegree[j] == 0: queue.append(j) return res if len(res) == numCourses else []
方法二:dfs + 栈
原文:https://www.cnblogs.com/oldby/p/11619946.html