Question 2 Range Sum Query 2D
Method 1 off by 1
class NumMatrix {
int[][] prefixSum;
public NumMatrix(int[][] matrix) {
this.prefixSum = new int[matrix.length + 1][matrix[0].length + 1];
precalculation(matrix);
}
private void precalcuation(int[][] matrix) {
for (int i = 1; i <= matrix.length; i++) {
for (int j = 1; j <= matrix[0].length; j++) {
prefixSum[i][j] = prefixSum[i-1][j] + prefixSum[i][j-1] + matrix[i - 1][j - 1]'
}
}
}
public int sumRegion(int row1, int col1, int row2, int col2) {
return prefixSum[row2 + 1][col2 + 1]- prefixSum[row2 + 1][col1]- prefixSum[row1][col2 + 1] + prefixSum[row1][col1];
}
}Method 2 NOT off by 1
Last updated