File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * [Problem]: [207] Course Schedule
3
+ * (https://leetcode.com/problems/course-schedule/description/)
4
+ */
5
+
6
+ function canFinish ( numCourses : number , prerequisites : number [ ] [ ] ) : boolean {
7
+ // 시간복잡도 O(n+m)
8
+ // 공간복잡도 O(n+m)
9
+ function graphFunc ( numCourses : number , prerequisites : number [ ] [ ] ) : boolean {
10
+ const graph : number [ ] [ ] = Array . from ( { length : numCourses } , ( ) => [ ] ) ;
11
+
12
+ for ( const [ course , prerequisite ] of prerequisites ) {
13
+ graph [ prerequisite ] . push ( course ) ;
14
+ }
15
+
16
+ let traversing = new Array ( numCourses ) . fill ( false ) ;
17
+ let visited = new Array ( numCourses ) . fill ( false ) ;
18
+
19
+ function dfs ( course : number ) : boolean {
20
+ if ( traversing [ course ] ) return false ;
21
+ if ( visited [ course ] ) return true ;
22
+
23
+ traversing [ course ] = true ;
24
+ for ( let pre of graph [ course ] ) {
25
+ if ( ! dfs ( pre ) ) {
26
+ return false ;
27
+ }
28
+ }
29
+
30
+ traversing [ course ] = false ;
31
+ visited [ course ] = true ;
32
+ return true ;
33
+ }
34
+
35
+ for ( let i = 0 ; i < numCourses ; i ++ ) {
36
+ if ( ! visited [ i ] && ! dfs ( i ) ) {
37
+ return false ;
38
+ }
39
+ }
40
+ return true ;
41
+ }
42
+ }
You can’t perform that action at this time.
0 commit comments