-
Notifications
You must be signed in to change notification settings - Fork 0
/
6148. 矩阵中的局部最大值.js
45 lines (35 loc) · 1.34 KB
/
6148. 矩阵中的局部最大值.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* 给你一个大小为 n x n 的整数矩阵 grid 。
生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal ,并满足:
maxLocal[i][j] 等于 grid 中以 i + 1 行和 j + 1 列为中心的 3 x 3 矩阵中的 最大值 。
换句话说,我们希望找出 grid 中每个 3 x 3 矩阵中的最大值。
返回生成的矩阵。 */
/* 输入:grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]
输出:[[9,9],[8,6]]
解释:原矩阵和生成的矩阵如上图所示。
注意,生成的矩阵中,每个值都对应 grid 中一个相接的 3 x 3 矩阵的最大值。*/
/* 输入:grid = [[1,1,1,1,1],[1,1,1,1,1],[1,1,2,1,1],[1,1,1,1,1],[1,1,1,1,1]]
输出:[[2,2,2],[2,2,2],[2,2,2]]
解释:注意,2 包含在 grid 中每个 3 x 3 的矩阵中。 */
/**
* @param {number[][]} grid
* @return {number[][]}
*/
function getMax(i, j, grid) {
let max = 0;
for(let m = i; m <= i + 2; m++) {
for(let n = j; n <= j + 2; n++) {
max = Math.max(grid[m][n], max)
}
}
return max;
}
var largestLocal = function(grid) {
let size = grid[0].length - 2; // 2
let result = new Array(size).fill(0).map(() => new Array(size).fill(0));
for(let x = 0; x <= size - 1; x++) {
for(let y = 0; y <= size - 1; y++) {
result[x][y] = getMax(x, y, grid)
}
}
return result;
};