File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ package medium ;
2
+
3
+ import java .util .HashSet ;
4
+ import java .util .Iterator ;
5
+ import java .util .Set ;
6
+
7
+ public class CourseSchedule {
8
+
9
+ public static boolean canFinish (int numCourses , int [][] prerequisites ) {
10
+ int [] indegree = new int [numCourses ];
11
+ for (int [] prereq : prerequisites ){
12
+ indegree [prereq [0 ]]++;
13
+ }
14
+ Set <Integer > zeroDegree = new HashSet ();
15
+ for (int i = 0 ; i < numCourses ; i ++){
16
+ if (indegree [i ] == 0 ) zeroDegree .add (i );
17
+ }
18
+ if (zeroDegree .isEmpty ()) return false ;
19
+
20
+ while (!zeroDegree .isEmpty ()){
21
+ Iterator <Integer > it = zeroDegree .iterator ();
22
+ int course = it .next ();
23
+ zeroDegree .remove (course );
24
+ for (int [] prereq : prerequisites ){
25
+ if (prereq [1 ] == course ){
26
+ indegree [prereq [0 ]]--;
27
+ if (indegree [prereq [0 ]] == 0 ) zeroDegree .add (prereq [0 ]);
28
+ }
29
+ }
30
+ }
31
+
32
+ for (int i : indegree ){
33
+ if (i != 0 ) return false ;
34
+ }
35
+ return true ;
36
+ }
37
+
38
+ public static void main (String ...strings ){
39
+ int numCourses = 2 ;
40
+ int [][] prerequisites = new int [][]{{0 ,1 }};
41
+ System .out .print (canFinish (numCourses , prerequisites ));
42
+ }
43
+
44
+ }
You can’t perform that action at this time.
0 commit comments