File tree Expand file tree Collapse file tree 3 files changed +75
-0
lines changed
time-needed-to-inform-all-employees Expand file tree Collapse file tree 3 files changed +75
-0
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,10 @@ Step 2. Add the dependency
49
49
50
50
<summary >展开查看</summary >
51
51
52
+ https://leetcode.cn/problems/time-needed-to-inform-all-employees
53
+
54
+ https://leetcode.cn/problems/rotting-oranges
55
+
52
56
https://leetcode.cn/problems/exam-room/
53
57
54
58
https://leetcode.cn/problems/as-far-from-land-as-possible/
Original file line number Diff line number Diff line change
1
+ function orangesRotting ( grid : number [ ] [ ] ) : number {
2
+ let minutes = 0 ;
3
+ let fresh = 0 ;
4
+ let queue : [ number , number ] [ ] = [ ] ;
5
+ const w = grid . length ,
6
+ h = grid [ 0 ] . length ;
7
+ for ( let i = 0 ; i < w ; i ++ ) {
8
+ for ( let j = 0 ; j < h ; j ++ ) {
9
+ if ( grid [ i ] [ j ] === 1 ) fresh ++ ;
10
+ if ( grid [ i ] [ j ] === 2 ) queue . push ( [ i , j ] ) ;
11
+ }
12
+ }
13
+ const area = [
14
+ [ 0 , 1 ] ,
15
+ [ 0 , - 1 ] ,
16
+ [ - 1 , 0 ] ,
17
+ [ 1 , 0 ] ,
18
+ ] ;
19
+ while ( queue . length !== 0 && fresh ) {
20
+ const next : [ number , number ] [ ] = [ ] ;
21
+ while ( queue . length !== 0 ) {
22
+ // @ts -ignore
23
+ const current = queue . pop ( ) as [ number , number ] ;
24
+ for ( const [ dx , dy ] of area ) {
25
+ // @ts -ignore
26
+ const x = dx + current [ 0 ] ,
27
+ y = dy + current [ 1 ] ;
28
+ if ( x >= 0 && x < w && y >= 0 && y < h ) {
29
+ if ( grid [ x ] [ y ] === 1 ) {
30
+ grid [ x ] [ y ] = 2 ;
31
+ next . push ( [ x , y ] ) ;
32
+ fresh -- ;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ minutes ++ ;
38
+ queue = next ;
39
+ }
40
+ return fresh === 0 ? minutes : - 1 ;
41
+ }
42
+ export default orangesRotting ;
Original file line number Diff line number Diff line change
1
+ function numOfMinutes (
2
+ n : number ,
3
+ headID : number ,
4
+ manager : number [ ] ,
5
+ informTime : number [ ] ,
6
+ ) : number {
7
+ const max : number [ ] = [ ] ;
8
+ const pretime : number [ ] = new Array ( n ) . fill ( - 1 ) ;
9
+ // 顶层
10
+ pretime [ headID ] = 0 ;
11
+
12
+ function dfs ( currentNode : number ) : number {
13
+ if ( pretime [ currentNode ] >= 0 ) return pretime [ currentNode ] ;
14
+
15
+ pretime [ currentNode ] = informTime [ manager [ currentNode ] ] +
16
+ dfs ( manager [ currentNode ] ) ;
17
+ return pretime [ currentNode ] ;
18
+ }
19
+
20
+ // 从叶子节点向上搜索
21
+ for ( let i = 0 ; i < n ; i ++ ) {
22
+ if ( informTime [ i ] !== 0 ) continue ;
23
+
24
+ max . push ( dfs ( i ) ) ;
25
+ }
26
+
27
+ return Math . max ( ...max ) ;
28
+ }
29
+ export default numOfMinutes ;
You can’t perform that action at this time.
0 commit comments