Skip to content

Commit fc9658c

Browse files
MEDIUM/src/medium/CourseSchedule.java
1 parent b8f54ec commit fc9658c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

MEDIUM/src/medium/CourseSchedule.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
}

0 commit comments

Comments
 (0)