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;
}
}