Problem
You are given an m x n
integer matrix grid
.
We define an hourglass as a part of the matrix with the following form:
Return **the *maximum* sum of the elements of an hourglass**.
Note that an hourglass cannot be rotated and must be entirely contained within the matrix.
Example 1:
Input: grid = [[6,2,1,3],[4,2,1,5],[9,2,8,7],[4,1,2,9]]
Output: 30
Explanation: The cells shown above represent the hourglass with the maximum sum: 6 + 2 + 1 + 2 + 9 + 2 + 8 = 30.
Example 2:
Input: grid = [[1,2,3],[4,5,6],[7,8,9]]
Output: 35
Explanation: There is only one hourglass in the matrix, with the sum: 1 + 2 + 3 + 5 + 7 + 8 + 9 = 35.
Constraints:
m == grid.length
n == grid[i].length
3 <= m, n <= 150
0 <= grid[i][j] <= 10^6
Solution (Java)
class Solution {
public int maxSum(int[][] grid) {
int r = grid.length;
int c = grid[0].length;
int max = 0;
for(int i = 0; i < r-2; i++){
for(int j = 0; j < c-2; j++){
int sum = 0;
for(int v = i; v < i+3; v++){
for(int k = j; k < j+3; k++){
sum += grid[v][k];
}
}
sum = sum - grid[i+1][j] - grid[i+1][j+2];
max = Math.max(max, sum);
}
}
return max;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).