Matrix Cells in Distance Order LeetCode solution in JavaScript

1
var allCellsDistOrder = function (rows, cols, rCenter, cCenter) {
2
let distances = [];
3
let result = [];
4

5
//create a new "visited" cells matrix
6
let visited = new Array(rows).fill([]);
7
for (i = 0; i < visited.length; i++) {
8
visited[i] = new Array(cols).fill(0);
9
}
10

11
const computeDistances = (row, col, rCenter, cCenter) => {
12
if (row >= rows || col >= cols) return;
13
if (visited[row][col]) return; // don't compute distance again if cell already visited
14
visited[row][col] = 1;
15

16
let distance = Math.abs(rCenter - row) + Math.abs(cCenter - col);
17
if (distances[distance]) {
18
distances[distance].add([row, col]);
19
} else {
20
distances[distance] = new Set();
21
distances[distance].add([row, col]);
22
}
23

24
computeDistances(row + 1, col, rCenter, cCenter);
25
computeDistances(row, col + 1, rCenter, cCenter);
26
};
27

28
computeDistances(0, 0, rCenter, cCenter);
29

30
distances.forEach((distance) => {
31
result.push(...distance);
32
});
33

34
return result;
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0