Advertisement
Valkyrie006

Untitled

Feb 8th, 2025
39
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.97 KB | Software | 0 0
  1. import java.util.*;
  2.  
  3. public class Main {
  4.     public static int[][] solve(int[][] matrix) {
  5.         List<int[]> localMaximumList = new ArrayList<>();
  6.  
  7.         int m = matrix.length, n = matrix[0].length;
  8.         for (int row = 0; row < m; row++) {
  9.             for (int col = 0; col < n; col++) {
  10.                 // try to consider this as local maximum
  11.                 if (matrix[row][col] > 0) {
  12.                     // this can be considered
  13.                     int[][] ignoredCells = new int[][]{
  14.                             {row - matrix[row][col], col - matrix[row][col]},
  15.                             {row - matrix[row][col], col + matrix[row][col]},
  16.                             {row + matrix[row][col], col - matrix[row][col]},
  17.                             {row + matrix[row][col], col + matrix[row][col]},
  18.                             {row, col}
  19.                     };
  20.                     boolean canBeLocalMaximum = true;
  21.                     for (int regionRow = Math.max(row - matrix[row][col], 0); regionRow <= Math.min(row + matrix[row][col], m - 1); regionRow++) {
  22.                         for (int regionCol = Math.max(col - matrix[row][col], 0); regionCol <= Math.min(col + matrix[row][col], n - 1); regionCol++) {
  23.                             // ignore edge cases
  24.                             boolean canIgnore = false;
  25.                             for (int[] cell: ignoredCells) {
  26.                                 if (cell[0] == regionRow && cell[1] == regionCol) {
  27.                                     canIgnore = true;
  28.                                 }
  29.                             }
  30.                             if (canIgnore) {
  31.                                 continue;
  32.                             }
  33.  
  34.                             if (matrix[regionRow][regionCol] >= matrix[row][col]) {
  35.                                 canBeLocalMaximum = false;
  36.                                 break;
  37.                             }
  38.                         }
  39.                         if (!canBeLocalMaximum) {
  40.                             break;
  41.                         }
  42.                     }
  43.  
  44.                     if (canBeLocalMaximum) {
  45.                         localMaximumList.add(new int[]{row, col});
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.        
  51.         int[][] result = new int[localMaximumList.size()][];
  52.         for (int i = 0; i < localMaximumList.size(); i++) {
  53.             result[i] = localMaximumList.get(i);
  54.         }
  55.         return result;
  56.     }
  57.     public static void main(String[] args) throws Exception {
  58.         int[][] matrix = new int[][]{
  59.                 {3, 0, 0, 0, 0},
  60.                 {0, 0, 1, 0, 0},
  61.                 {0, 0, 2, 0, 0},
  62.                 {0, 0, 0, 0, 0},
  63.                 {0, 0, 0, 0, 0},
  64.                 {0, 3, 0, 0, 3}
  65.         };
  66.  
  67.         int[][] localMaximums = solve(matrix);
  68.         for (int[] localMaximum: localMaximums) {
  69.             System.out.println(localMaximum[0] + " " + localMaximum[1]);
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement