File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * https://leetcode.com/problems/course-schedule/
3+ * T.C. O(V + E)
4+ * S.C. O(V + E)
5+ */
6+ function canFinish ( numCourses : number , prerequisites : number [ ] [ ] ) : boolean {
7+ const graph : number [ ] [ ] = Array . from ( { length : numCourses } , ( ) => [ ] ) ;
8+ for ( const [ course , pre ] of prerequisites ) {
9+ graph [ pre ] . push ( course ) ;
10+ }
11+
12+ const visited = new Array ( numCourses ) . fill ( false ) ;
13+ const visiting = new Array ( numCourses ) . fill ( false ) ;
14+
15+ const dfs = ( course : number ) : boolean => {
16+ if ( visited [ course ] ) return true ;
17+ if ( visiting [ course ] ) return false ;
18+
19+ visiting [ course ] = true ;
20+ for ( const neighbor of graph [ course ] ) {
21+ if ( ! dfs ( neighbor ) ) return false ;
22+ }
23+ visiting [ course ] = false ;
24+ visited [ course ] = true ;
25+
26+ return true ;
27+ } ;
28+
29+ for ( let i = 0 ; i < numCourses ; i ++ ) {
30+ if ( ! visited [ i ] && ! dfs ( i ) ) return false ;
31+ }
32+
33+ return true ;
34+ }
You can’t perform that action at this time.
0 commit comments