(int[][] original)
| 4 | |
| 5 | public class QuestionB { |
| 6 | public static int getMaxMatrix(int[][] original) { |
| 7 | int maxArea = Integer.MIN_VALUE; // Important! Max could be < 0 |
| 8 | int rowCount = original.length; |
| 9 | int columnCount = original[0].length; |
| 10 | int[][] matrix = precomputeMatrix(original); |
| 11 | for (int row1 = 0; row1 < rowCount; row1++) { |
| 12 | for (int row2 = row1; row2 < rowCount; row2++) { |
| 13 | for (int col1 = 0; col1 < columnCount; col1++) { |
| 14 | for (int col2 = col1; col2 < columnCount; col2++) { |
| 15 | int sum = computeSum(matrix, row1, row2, col1, col2); |
| 16 | if (sum > maxArea) { |
| 17 | System.out.println("New Max of " + sum + ": (rows " + row1 + " to " + row2 + ") and (columns " + col1 + " to " + col2 + ")"); |
| 18 | maxArea = sum; |
| 19 | } |
| 20 | |
| 21 | } |
| 22 | } |
| 23 | } |
| 24 | } |
| 25 | return maxArea; |
| 26 | } |
| 27 | |
| 28 | private static int[][] precomputeMatrix(int[][] matrix) { |
| 29 | int[][] sumMatrix = new int[matrix.length][matrix[0].length]; |
no test coverage detected