01 · Question
Return the ordering of courses you should take to finish all courses. If impossible, return an empty array.
02 · Solution
1from collections import deque2 3def findOrder(numCourses: int, prerequisites: List[List[int]]) -> List[int]:4 graph = [[] for _ in range(numCourses)]5 indeg = [0] * numCourses6 for a, b in prerequisites:7 graph[b].append(a)8 indeg[a] += 19 10 q = deque([i for i in range(numCourses) if indeg[i] == 0])11 order = []12 13 while q:14 cur = q.popleft()15 order.append(cur)16 for nxt in graph[cur]:17 indeg[nxt] -= 118 if indeg[nxt] == 0:19 q.append(nxt)20 21 return order if len(order) == numCourses else []