「每日LeetCode」2023年3月1日

本文最后更新于:2023年3月19日 晚上

2373.矩阵中的局部最大值

2373.矩阵中的局部最大值

Category Difficulty Likes Dislikes
algorithms Easy (84.92%) 11 -

Tags
Companies
给你一个大小为 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 矩阵中的最大值。
返回生成的矩阵。

示例 1:

输入: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 矩阵的最大值。
示例 2:

输入: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 的矩阵中。

提示:

  • n == grid.length == grid[i].length
  • 3 <= n <= 100
  • 1 <= grid[i][j] <= 100

Discussion | Solution

思路

按题意模拟即可

解答

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
/*
* @lc app=leetcode.cn id=2373 lang=javascript
*
* [2373] 矩阵中的局部最大值
*/

// @lc code=start
/**
* @param {number[][]} grid
* @return {number[][]}
*/
var largestLocal = function (grid) {
const res = new Array(grid.length - 2);
for (let i = 0; i < res.length; i++) {
res[i] = new Array(grid.length - 2);
}
for (let i = 0; i < grid.length - 2; i++) {
for (let j = 0; j < grid[i].length - 2; j++) {
const max = Math.max(
grid[i][j],
grid[i + 1][j],
grid[i + 2][j],
grid[i][j + 1],
grid[i][j + 2],
grid[i + 1][j + 1],
grid[i + 1][j + 2],
grid[i + 2][j + 1],
grid[i + 2][j + 2]
);
res[i][j] = max;
}
}
return res;
};
// @lc code=end