Skip to content

Commit d9541da

Browse files
committed
feat : course-schedule
1 parent a598c77 commit d9541da

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

course-schedule/ekgns33.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
*
3+
* solution : topological sort
4+
* tc : O(E + V)
5+
* sc : O(E + V)
6+
*
7+
* */
8+
class Solution {
9+
public boolean canFinish(int numCourses, int[][] prerequisites) {
10+
List<Integer>[] adj = new ArrayList[numCourses];
11+
for(int i = 0 ; i < numCourses; i++) {
12+
adj[i] = new ArrayList<>();
13+
}
14+
boolean[] v = new boolean[numCourses];
15+
int[] indeg = new int[numCourses];
16+
for(int[] pre : prerequisites) {
17+
int src = pre[0];
18+
int dst = pre[1];
19+
adj[src].add(dst);
20+
indeg[dst]++;
21+
}
22+
Queue<Integer> q = new LinkedList<>();
23+
for(int i = 0; i < numCourses; i ++) {
24+
if(indeg[i] == 0) {
25+
q.add(i);
26+
v[i] = true;
27+
}
28+
}
29+
int cnt= 0;
30+
while(!q.isEmpty()) {
31+
int curNode = q.poll();
32+
cnt++;
33+
for(int dst : adj[curNode]) {
34+
indeg[dst]--;
35+
if(indeg[dst] ==0 && !v[dst]) {
36+
q.add(dst);
37+
}
38+
}
39+
}
40+
41+
return cnt == numCourses;
42+
43+
}
44+
}

0 commit comments

Comments
 (0)