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+ /*
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+ }
You can’t perform that action at this time.
0 commit comments