File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public boolean canFinish (int numCourses , int [][] prerequisites ) {
3+ List <Integer >[] adjList = new ArrayList [numCourses ];
4+ int [] indegrees = new int [numCourses ];
5+ Queue <Integer > q = new LinkedList <>();
6+ int courseCount = 0 ;
7+
8+ for (int i = 0 ; i < numCourses ; i ++) {
9+ adjList [i ] = new ArrayList <>();
10+ }
11+ for (int [] pair : prerequisites ) {
12+ adjList [pair [1 ]].add (pair [0 ]);
13+ ++indegrees [pair [0 ]];
14+ }
15+
16+ for (int i = 0 ; i < indegrees .length ; i ++) {
17+ if (indegrees [i ] == 0 ) {
18+ q .offer (i );
19+ }
20+ }
21+
22+ while (!q .isEmpty ()) {
23+ int course = q .poll ();
24+ ++courseCount ;
25+
26+ for (int prereqCourse : adjList [course ]) {
27+ if (--indegrees [prereqCourse ] == 0 ) {
28+ q .offer (prereqCourse );
29+ }
30+ }
31+ }
32+
33+ return courseCount == numCourses ;
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments