File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments