File tree Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ leetcode 测试
10
10
11
11
##### 包含的内容如下
12
12
13
+ https://leetcode.cn/problems/course-schedule/
14
+
13
15
https://leetcode.cn/problems/QA2IGt/
14
16
15
17
https://leetcode.cn/problems/course-schedule-ii/
Original file line number Diff line number Diff line change
1
+ export default function canFinish (
2
+ numCourses : number ,
3
+ prerequisites : number [ ] [ ] ,
4
+ ) : boolean {
5
+ const dependents : Map < number , number [ ] > = new Map ( ) ;
6
+ // const dependents: number[][] = new Array(numCourses).fill(0).map(() => []);
7
+ const indegress : Map < number , number > = new Map ( ) ;
8
+ // const indegress: number[] = new Array(numCourses).fill(0);
9
+ for ( const [ child , parent ] of prerequisites ) {
10
+ const array = dependents . get ( parent ) ?? [ ] ;
11
+ array . push ( child ) ;
12
+ dependents . set ( parent , array ) ;
13
+
14
+ // dependents[parent].push(child);
15
+ indegress . set ( child , ( indegress . get ( child ) ?? 0 ) + 1 ) ;
16
+ // indegress[child]++;
17
+ }
18
+ const queue : number [ ] = Array . from ( Array ( numCourses ) . fill ( 0 ) . keys ( ) ) . filter (
19
+ ( i ) => ! indegress . has ( i ) ,
20
+ ) ;
21
+
22
+ const result : number [ ] = [ ] ;
23
+ while ( queue . length ) {
24
+ const u = queue . shift ( ) as number ;
25
+ result . push ( u ) ;
26
+ /* dependents[u] */
27
+ for ( const v of dependents . get ( u ) ?? [ ] ) {
28
+ const degree = ( indegress . get ( v ) ?? 0 ) - 1 ;
29
+ // indegress[v]--;
30
+ indegress . set ( v , degree ) ;
31
+ if ( degree === 0 ) queue . push ( v ) ;
32
+ }
33
+ }
34
+ return result . length === numCourses ;
35
+ }
You can’t perform that action at this time.
0 commit comments