1
+ // Runtime: 152 ms (Top 83.33%) | Memory: 51.1 MB (Top 50.00%)
2
+
1
3
var allCellsDistOrder = function ( rows , cols , rCenter , cCenter ) {
2
4
let distances = [ ]
3
5
let result = [ ]
4
-
5
- //create a new "visited" cells matrix
6
- let visited = new Array ( rows ) . fill ( [ ] )
6
+
7
+ //create a new "visited" cells matrix
8
+ let visited = new Array ( rows ) . fill ( [ ] )
7
9
for ( i = 0 ; i < visited . length ; i ++ ) {
8
10
visited [ i ] = new Array ( cols ) . fill ( 0 )
9
11
}
@@ -12,24 +14,24 @@ var allCellsDistOrder = function(rows, cols, rCenter, cCenter) {
12
14
if ( row >= rows || col >= cols ) return
13
15
if ( visited [ row ] [ col ] ) return // don't compute distance again if cell already visited
14
16
visited [ row ] [ col ] = 1
15
-
17
+
16
18
let distance = Math . abs ( rCenter - row ) + Math . abs ( cCenter - col )
17
19
if ( distances [ distance ] ) {
18
20
distances [ distance ] . add ( [ row , col ] )
19
21
} else {
20
22
distances [ distance ] = new Set ( )
21
23
distances [ distance ] . add ( [ row , col ] )
22
24
}
23
-
25
+
24
26
computeDistances ( row + 1 , col , rCenter , cCenter )
25
27
computeDistances ( row , col + 1 , rCenter , cCenter )
26
28
}
27
-
29
+
28
30
computeDistances ( 0 , 0 , rCenter , cCenter )
29
31
30
32
distances . forEach ( distance => {
31
33
result . push ( ...distance )
32
34
} )
33
-
35
+
34
36
return result
35
- } ;
37
+ } ;
0 commit comments