# 2428. Maximum Sum of an Hourglass ###### tags: `Leetcode` `Medium` Link: https://leetcode.com/problems/maximum-sum-of-an-hourglass/description/ ## 思路 可以暴力解 时间复杂度为 $O(MN)$ 也可以用prefix解 时间复杂度是一样的 ## Code brute force ```java= class Solution { public int maxSum(int[][] grid) { int m = grid.length, n = grid[0].length; int ans = 0; for(int i=0; i+2<m; i++){ for(int j=0; j+2<n; j++){ ans = Math.max(ans, grid[i][j]+grid[i][j+1]+grid[i][j+2]+grid[i+1][j+1]+grid[i+2][j]+grid[i+2][j+1]+grid[i+2][j+2]); } } return ans; } } ``` prefix ```java= class Solution { public int maxSum(int[][] grid) { int m = grid.length, n = grid[0].length; int[][] prefix = new int[m+1][n+1]; for(int i=1; i<=m; i++){ int sum = 0; for(int j=1; j<=n; j++){ sum += grid[i-1][j-1]; prefix[i][j] = prefix[i-1][j]+sum; } } int ans = 0; for(int i=1; i+2<=m; i++){ for(int j=1; j+2<=n; j++){ int curr = prefix[i+2][j+2]-prefix[i-1][j+2]-prefix[i+2][j-1]+prefix[i-1][j-1]; curr -= grid[i][j-1]+grid[i][j+1]; ans = Math.max(curr, ans); } } return ans; } } ```