210. Course Schedule II
- topological sort
class Solution(object):
def findOrder(self, numCourses, prerequisites):
pre = [[] for _ in range(numCourses)]
inEdge = [0] * numCourses
for course, prereq in prerequisites:
pre[prereq].append(course)
inEdge[course] += 1
que = deque()
res = []
for i in range(numCourses):
if inEdge[i] == 0:
que.append(i)
while que:
node = que.popleft()
res.append(node)
for n in pre[node]:
inEdge[n] -= 1
if inEdge[n] == 0:
que.append(n)
return res if len(res) == numCourses else []