矩阵中的局部最大值
# 矩阵中的局部最大值 (opens new window)
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Easy (84.79%) | 11 | - |
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 矩阵的最大值。
1
2
3
4
2
3
4
示例 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 的矩阵中。
1
2
3
2
3
提示:
n == grid.length == grid[i].length
3 <= n <= 100
1 <= grid[i][j] <= 100
Discussion (opens new window) | Solution (opens new window)
/*
* @Author: 仲灏<izhaong@outlook.com>🌶🌶🌶
* @Date: 2022-11-10 13:59:00
* @LastEditTime: 2022-11-10 14:12:19
* @LastEditors: 仲灏<izhaong@outlook.com>🌶🌶🌶
* @Description:
* @FilePath: /imooc-jira/Users/izhaong/izhaong/Project_me/leetcode/2373.矩阵中的局部最大值.js
*/
/*
* @lc app=leetcode.cn id=2373 lang=javascript
*
* [2373] 矩阵中的局部最大值
*
* https://leetcode.cn/problems/largest-local-values-in-a-matrix/description/
*
* algorithms
* Easy (84.79%)
* Likes: 11
* Dislikes: 0
* Total Accepted: 10.3K
* Total Submissions: 12.1K
* Testcase Example: '[[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]'
*
* 给你一个大小为 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
*
*
*/
// @lc code=start
/**
* @param {number[][]} grid
* @return {number[][]}
*/
function largestLocal(grid) {
const n = grid.length - 2;
const resArr = new Array(n);
for (let i = 0; i < n; i++) {
resArr[i] = new Array(n);
for (let j = 0; j < n; j++) {
resArr[i][j] = Math.max(
grid[i][j],
grid[i][j + 1],
grid[i][j + 2],
grid[i + 2][j],
grid[i + 2][j + 1],
grid[i + 2][j + 2],
grid[i + 1][j],
grid[i + 1][j + 1],
grid[i + 1][j + 2]
);
}
}
return resArr;
}
// @lc code=end
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
上次更新: 2022/12/09, 22:58:08