二维区域和检索-矩阵不可变

65 阅读1分钟

304 二维区域和检索-矩阵不可变

class NumMatrix {
    //前缀和
    private int[][] preSum;
    public NumMatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        preSum = new int[m][n+1];
        //计算每一行前缀和
        for (int i = 0; i < m; i++) {
            for(int j = 1; j < n + 1; j++) {
                preSum[i][j] = preSum[i][j-1] + matrix[i][j-1];
            }
        }
    }
    
    public int sumRegion(int row1, int col1, int row2, int col2) {
        int sum = 0;
        for (int i =row1; i <= row2; i++) {
            sum += preSum[i][col2+1] - preSum[i][col1];
        }
        return sum;
    }
}