Skip to content

Commit 41d2307

Browse files
authored
Create Course_Schedule_II.java
1 parent 38aa1db commit 41d2307

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

GraphsDFS&BFS/Course_Schedule_II.java

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//Leetcode 210. Course Schedule II
2+
//Question - https://leetcode.com/problems/course-schedule-ii/
3+
//Kahn's Topological Sort
4+
5+
class Solution {
6+
public int[] findOrder(int numCourses, int[][] prerequisites) {
7+
int result[] = new int[numCourses];
8+
int cntVertex = 0;
9+
Queue<Integer> inDegree0 = new LinkedList<>();
10+
int inDegree[] = new int[numCourses];
11+
Arrays.fill(inDegree,0);
12+
13+
for(int i=0 ; i<prerequisites.length ; i++){
14+
inDegree[prerequisites[i][0]]++;
15+
}
16+
17+
for(int i=0 ; i<numCourses ; i++){
18+
if(inDegree[i]==0) inDegree0.add(i);
19+
}
20+
21+
while(!inDegree0.isEmpty()){
22+
int curr = inDegree0.poll();
23+
ArrayList<Integer> neighbours = findNeighbours(prerequisites,curr);
24+
result[cntVertex] = curr;
25+
26+
for(int neighbour : neighbours){
27+
if(--inDegree[neighbour]==0) inDegree0.add(neighbour);
28+
}
29+
cntVertex++;
30+
}
31+
32+
if(cntVertex!=numCourses) return (new int[0]);
33+
else return result;
34+
}
35+
36+
public ArrayList<Integer> findNeighbours(int[][] prerequisites, int v){
37+
ArrayList<Integer> neighbours = new ArrayList<Integer>();
38+
for(int i=0;i<prerequisites.length;i++){
39+
if(prerequisites[i][1]==v) neighbours.add(prerequisites[i][0]);
40+
}
41+
return neighbours;
42+
}
43+
}

0 commit comments

Comments
 (0)