Count Submatrices with Top-Left Element and Sum Less Than k

Medium
Watch on YouTube ↗

Solution

class Solution {
    public int countSubmatrices(int[][] grid, int k) {
        int m = grid.length, n = grid[0].length;
        int presum[][] = new int[m+1][n+1]; // O(m*n)
        int ans = 0;
        // O(m*n)
        for(int i=1; i<=m; i++) {
            for(int j=1; j<=n; j++) {
                presum[i][j] = grid[i-1][j-1] +
                presum[i][j-1] + presum[i-1][j] -
                presum[i-1][j-1];
                if(presum[i][j] <=k)
                    ans++;
                else break;
            }
        }
        return ans;
    }
}