@@ -3,33 +3,31 @@ export default function canFinish(
3
3
prerequisites : number [ ] [ ] ,
4
4
) : boolean {
5
5
const dependents : Map < number , number [ ] > = new Map ( ) ;
6
- // const dependents: number[][] = new Array(numCourses).fill(0).map(() => []);
6
+
7
7
const indegress : Map < number , number > = new Map ( ) ;
8
- // const indegress: number[] = new Array(numCourses).fill(0);
8
+
9
9
for ( const [ child , parent ] of prerequisites ) {
10
10
const array = dependents . get ( parent ) ?? [ ] ;
11
11
array . push ( child ) ;
12
12
dependents . set ( parent , array ) ;
13
13
14
- // dependents[parent].push(child);
15
14
indegress . set ( child , ( indegress . get ( child ) ?? 0 ) + 1 ) ;
16
- // indegress[child]++;
17
15
}
18
16
const queue : number [ ] = Array . from ( Array ( numCourses ) . fill ( 0 ) . keys ( ) ) . filter (
19
17
( i ) => ! indegress . has ( i ) ,
20
18
) ;
21
19
22
- const result : number [ ] = [ ] ;
20
+ let result : number = 0 ;
23
21
while ( queue . length ) {
24
22
const u = queue . shift ( ) as number ;
25
- result . push ( u ) ;
26
- /* dependents[u] */
23
+ result ++ ;
24
+
27
25
for ( const v of dependents . get ( u ) ?? [ ] ) {
28
26
const degree = ( indegress . get ( v ) ?? 0 ) - 1 ;
29
- // indegress[v]--;
27
+
30
28
indegress . set ( v , degree ) ;
31
29
if ( degree === 0 ) queue . push ( v ) ;
32
30
}
33
31
}
34
- return result . length === numCourses ;
32
+ return result === numCourses ;
35
33
}
0 commit comments