Welcome to Subscribe On Youtube
2373. Largest Local Values in a Matrix
Description
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 the3 x 3
matrix ingrid
centered around rowi + 1
and columnj + 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
Solutions
-
class Solution { public int[][] largestLocal(int[][] grid) { int n = grid.length; int[][] ans = new int[n - 2][n - 2]; for (int i = 0; i < n - 2; ++i) { for (int j = 0; j < n - 2; ++j) { for (int x = i; x <= i + 2; ++x) { for (int y = j; y <= j + 2; ++y) { ans[i][j] = Math.max(ans[i][j], grid[x][y]); } } } } return ans; } }
-
class Solution { public: vector<vector<int>> largestLocal(vector<vector<int>>& grid) { int n = grid.size(); vector<vector<int>> ans(n - 2, vector<int>(n - 2)); for (int i = 0; i < n - 2; ++i) { for (int j = 0; j < n - 2; ++j) { for (int x = i; x <= i + 2; ++x) { for (int y = j; y <= j + 2; ++y) { ans[i][j] = max(ans[i][j], grid[x][y]); } } } } return ans; } };
-
class Solution: def largestLocal(self, grid: List[List[int]]) -> List[List[int]]: n = len(grid) ans = [[0] * (n - 2) for _ in range(n - 2)] for i in range(n - 2): for j in range(n - 2): ans[i][j] = max( grid[x][y] for x in range(i, i + 3) for y in range(j, j + 3) ) return ans
-
func largestLocal(grid [][]int) [][]int { n := len(grid) ans := make([][]int, n-2) for i := range ans { ans[i] = make([]int, n-2) for j := 0; j < n-2; j++ { for x := i; x <= i+2; x++ { for y := j; y <= j+2; y++ { ans[i][j] = max(ans[i][j], grid[x][y]) } } } } return ans }
-
function largestLocal(grid: number[][]): number[][] { const n = grid.length; const res = Array.from({ length: n - 2 }, () => new Array(n - 2).fill(0)); for (let i = 0; i < n - 2; i++) { for (let j = 0; j < n - 2; j++) { let max = 0; for (let k = i; k < i + 3; k++) { for (let z = j; z < j + 3; z++) { max = Math.max(max, grid[k][z]); } } res[i][j] = max; } } return res; }