Skip to content

Commit d60f2c8

Browse files
committed
Time: 6 ms (56.08%) | Memory: 46.4 MB (10.49%) - LeetSync
1 parent 95255ce commit d60f2c8

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
class Solution {
2+
public int[] findOrder(int numCourses, int[][] prerequisites) {
3+
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
4+
5+
for(int i = 0; i < numCourses; i++){
6+
graph.add(new ArrayList<>());
7+
}
8+
9+
for(int i = 0; i < prerequisites.length; i++){
10+
graph.get(prerequisites[i][1]).add(prerequisites[i][0]);
11+
}
12+
13+
int[] indegree = new int[numCourses];
14+
for(int i = 0; i < numCourses; i++){
15+
for(int neigh: graph.get(i)){
16+
indegree[neigh] ++;
17+
}
18+
}
19+
20+
Queue<Integer> q = new LinkedList<>();
21+
22+
for(int i = 0; i < numCourses; i++){
23+
if(indegree[i] == 0){
24+
q.add(i);
25+
}
26+
}
27+
int[] topo = new int[numCourses];
28+
int i = 0;
29+
30+
while(!q.isEmpty()){
31+
int top = q.poll();
32+
topo[i++] = top;
33+
34+
for(int neigh: graph.get(top)){
35+
indegree[neigh] --;
36+
if(indegree[neigh] == 0){
37+
q.add(neigh);
38+
}
39+
}
40+
}
41+
42+
if(i == numCourses){
43+
return topo;
44+
}else{
45+
return new int[]{};
46+
}
47+
}
48+
}

0 commit comments

Comments
 (0)