Course Schedule II
https://leetcode.com/problems/course-schedule-ii/
Topological Sort using indegree
Similar problem:
from collections import defaultdict,deque
class Solution:
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
res = []
if not prerequisites:
return list(range(numCourses))
inorder = defaultdict(int)
adj_list = defaultdict(list)
for pair in prerequisites:
course,preq = pair
inorder[course]+=1
adj_list[preq].append(course)
queue = deque([val for val in range(numCourses) if val not in inorder])
#print(queue)
while queue:
curr = queue.popleft()
res.append(curr)
for nxt in adj_list[curr]:
inorder[nxt]-=1
if inorder[nxt] == 0:
queue.append(nxt)
if len(res) != numCourses:
return []
return res
Last updated
Was this helpful?