Course Schedule II (Leetcode 210)

Problem Link: https://leetcode.com/problems/course-schedule-ii/

from collections import defaultdict
class Solution:
    def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
        
        adj=defaultdict(list)
        for i in range(len(prerequisites)):
            adj[prerequisites[i][1]].append(prerequisites[i][0])
        
        indegree=[0 for i in range(numCourses)]
        
        for i in adj:
            for j in adj[i]:
                indegree[j]+=1
        
        q=[]
        ans=[]
        for i in range(numCourses):
            if(indegree[i]==0):
                q.insert(0,i)
        
        while(len(q)>0):
            for _ in range(len(q)):
                node=q.pop()
                ans.append(node)
                for i in adj[node]:
                    indegree[i]-=1
                    if(indegree[i]==0):
                        q.insert(0,i)
                        
        if(len(ans)==numCourses):
            return ans
        else:
            return [] 

Last updated