You are given an `n x n`

integer matrix `grid`

.

Generate an integer matrix `maxLocal`

of size `(n - 2) x (n - 2)`

such that:

`maxLocal[i][j]`

is equal to the**largest**value of the`3 x 3`

matrix in`grid`

centered around row`i + 1`

and column`j + 1`

.

In other words, we want to find the largest value in every contiguous `3 x 3`

matrix in `grid`

.

Return *the generated matrix*.

**Example 1:**

Input:grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]Output:[[9,9],[8,6]]Explanation:The diagram above shows the original matrix and the generated matrix. Notice that each value in the generated matrix corresponds to the largest value of a contiguous 3 x 3 matrix in grid.

**Example 2:**

Input: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]]Output:[[2,2,2],[2,2,2],[2,2,2]]Explanation:Notice that the 2 is contained within every contiguous 3 x 3 matrix in grid.

**Constraints:**

`n == grid.length == grid[i].length`

`3 <= n <= 100`

`1 <= grid[i][j] <= 100`

**Solution: Brute Force**

Time complexity: O(n*n*9)

Space complexity: O(n*n)

## C++

1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Author: Huahua class Solution { public: vector<vector<int>> largestLocal(vector<vector<int>>& grid) { const int m = grid.size() - 2; vector<vector<int>> ans(m, vector<int>(m)); for (int i = 0; i < m; ++i) for (int j = 0; j < m; ++j) for (int dy = 0; dy <= 2; ++dy) for (int dx = 0; dx <= 2; ++dx) ans[i][j] = max(ans[i][j], grid[i + dy][j + dx]); return ans; } }; |