原题链接:
https://leetcode.cn/problems/largest-local-values-in-a-matrix/
解题思路:
- 原题需要生成矩阵
maxLocal
:maxLocal[i][j]
等于grid
中以i + 1
行和j + 1
列为中心的 3 x 3 矩阵中的 最大值 。 - 这句话的意思等同于
maxLocal[i][j]
等于grid
中以i
行和j
列为左上角的 3 x 3 矩阵中的 最大值 。
/**
* @param {number[][]} grid
* @return {number[][]}
*/
var largestLocal = function (grid) {
const n = grid.length // 缓存矩阵的长宽
// 创建存储结果的数组
let result = Array.from({ length: n - 2 }, () => new Array(n - 2).fill(0))
// 创建大小为(n - 2) x (n - 2) 的整数矩阵
for (let i = 0; i < n - 2; i++) {
for (let j = 0; j < n - 2; j++) {
let max = -Infinity // 缓存最大值
// 搜索以i和j为左上角,长宽为3的矩阵中的最大值
for (let k = 0; k < 3; k++) {
for (let l = 0; l < 3; l++) {
max = Math.max(max, grid[i + k][j + l])
}
}
// 将最大值存储到结果矩阵相应位置
result[i][j] = max
}
}
return result
}