class NumMatrix {
int[][] sums;
public NumMatrix(int[][] matrix) {
int rows = matrix.length; // 行数
if(rows > 0){
int cols = matrix[0].length; // 列数
sums = new int[rows][cols + 1];
// sums[0][0] = matrix[0][0];
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
sums[i][j+1] = sums[i][j] + matrix[i][j]; // sums从索引为1开始计数,因此有点怪
}
}
}
}
public int sumRegion(int row1, int col1, int row2, int col2) {
int sum = 0;
for(int i = row1; i <= row2; i++){
sum += sums[i][col2 + 1] - sums[i][col1]; // 如果sums的列数为cols,则应该是sums[i][col2]-sums[i][col1-1]
}
return sum;
}
}
/**
* Your NumMatrix object will be instantiated and called as such:
* NumMatrix obj = new NumMatrix(matrix);
* int param_1 = obj.sumRegion(row1,col1,row2,col2);
*/
leetcode304:二维区域和检索
最新推荐文章于 2022-06-07 13:59:12 发布