java: add «2373. Largest Local Values in a Matrix»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-05-13 17:05:04 +02:00
parent 4a3c33cda8
commit 0f5f897414
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,32 @@
class Solution {
private boolean isValid(int n, int y, int x) {
return y >= 0 && y < n && x >= 0 && x < n;
}
private void addLocal(int[][] grid, int[][] result, int y, int x) {
for (int d = 0; d < 9; ++d) {
int dy = (d / 3) - 1;
int dx = (d % 3) - 1;
if (!isValid(grid.length - 2, y - 1 + dy, x - 1 + dx)) {
continue;
}
result[y - 1 + dy][x - 1 + dx] = Math.max(result[y - 1 + dy][x - 1 + dx], grid[y][x]);
}
}
public int[][] largestLocal(int[][] grid) {
int N = grid.length;
int[][] result = new int[N - 2][N - 2];
for (int i = 0; i < N * N; ++i) {
int y = i / N;
int x = i % N;
addLocal(grid, result, y, x);
}
return result;
}
}