LeetCode 210 Course Schedule II - Implementation

The approach

Kahn's algorithm collecting the topological order.

function findOrder(numCourses, prerequisites): graph = [[] for _ in range(numCourses)] inDegree = [0] * numCourses for a, b in prerequisites: graph[b].append(a) inDegree[a] += 1 queue = [i for i in range(numCourses) if inDegree[i] == 0] result = [] while queue: course = queue.pop(0) result.append(course) for neighbor in graph[course]: inDegree[neighbor] -= 1 if inDegree[neighbor] == 0: queue.append(neighbor) return result if len(result) == numCourses else []

O(V+E)O(V + E) time and space.