class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { if(prerequisites.length == 0) return true; // Step-1 Create a adjacency list ArrayList> adj = new ArrayList<>(); for(int i=0; i()); } // Step-2 Fill adjacency list and indegree array int[] indegree = new int[numCourses]; for(int[] edge : prerequisites) { int u = edge[1]; int v = edge[0]; adj.get(u).add(v); indegree[v]++; } // Step-3 Find courses whose indegree is 0, add it to queue Queue q = new LinkedList<>(); for(int i=0; i