DEV Community

MD ARIFUL HAQUE

Posted on • Updated on

2373. Largest Local Values in a Matrix

2373. Largest Local Values in a Matrix

Easy

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:

``````class Solution {

/**
* @param Integer[][] \$grid
* @return Integer[][]
*/
function largestLocal(\$grid) {
\$n = count(\$grid);
\$ans = array_fill(0, \$n - 2, array_fill(0, \$n - 2, 0));

for (\$i = 0; \$i < \$n - 2; ++\$i){
for (\$j = 0; \$j < \$n - 2; ++\$j){
for (\$x = \$i; \$x < \$i + 3; ++\$x){
for (\$y = \$j; \$y < \$j + 3; ++\$y){
\$ans[\$i][\$j] = max(\$ans[\$i][\$j], \$grid[\$x][\$y]);
}
}
}
}

return \$ans;
}
}
``````

Contact Links