210. Course Schedule II
In numCourses
courses. You are given an array prerequisites
Return the ordering of courses you should take to finish all courses. If many valid answers, return any.
Note: This reuses the code of Course Schedule, which asks true/false
Here we just store the courses in the order as well.
def findOrder(numCourses: int, prerequisites: List[List[int]]):
preqCount = defaultdict(int)
enables = defaultdict(set)
for preq in prerequisites:
a, b = preq
preqCount[a] = preqCount[a] + 1
enables[b].add(a)
active = [] completed = 0
for i in range(numCourses):
if i not in preqCount:
active.append(i)
completed += 1
res = []
while active:
c = active.pop()
res.append(c)
if c in enables:
for e in enables[c]:
preqCount[e] = preqCount[e] - 1
if not preqCount[e]:
completed += 1
active.append(e)
return res if completed == numCourses else []
Comments
Post a Comment