Loading...

【前缀和】LCR_013_二维区域和检索-矩阵不可变

在这里插入图片描述 在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
    private int[][] preSum;

    public NumMatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;

        if(m==0||n==0){
            return;
        }
        preSum = new int[m+1][n+1];


        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                preSum[i][j]=preSum[i-1][j]+preSum[i][j-1]+matrix[i-1][j-1]-preSum[i-1][j-1];
            }
        }
    }
    
    public int sumRegion(int row1, int col1, int row2, int col2) {
        return preSum[row2+1][col2+1]-preSum[row2+1][col1]-preSum[row1][col2+1]+preSum[row1][col1];
    }

小贴士

预处理:preSum[i][j] = 上 + 左 + 当前元素 - 重复部分;

查询:区域和 = 整体和 - 左侧和 - 上方和 + 重复和。

最后更新于 2026-04-05 17:35:33
Code Road Record