力扣304題:二維區域和檢索
阿新 • • 發佈:2021-01-30
技術標籤:力扣演算法題演算法javaleetcodematrix
給定一個二維矩陣,計算其子矩形範圍內元素的總和,該子矩陣的左上角為 (row1, col1) ,右下角為 (row2, col2)。
示例:
給定 matrix = [
[3, 0, 1, 4, 2],
[5, 6, 3, 2, 1],
[1, 2, 0, 1, 5],
[4, 1, 0, 1, 7],
[1, 0, 3, 0, 5]
]
sumRegion(2, 1, 4, 3) -> 8
sumRegion(1, 1, 2, 2) -> 11
sumRegion(1, 2, 2, 4) -> 1
難度: 中等
演算法思路: 蠻力求解
class NumMatrix {
int[][] matrix;
public NumMatrix(int[][] matrix) {
this.matrix = matrix;
}
public int sumRegion(int row1, int col1, int row2, int col2) {
if(row1 < 0 || row1 >= matrix.length || col1 < 0 || col1 >= matrix[0].length
|| row2 < 0 || row2 >= matrix.length || col2 < 0 || col2 >= matrix[0].length){
return -1;
}
if (matrix == null) {
return 0;
}
if(row1 == row2 && col1 == col2){
return matrix[row1][col1];
}
int sum = 0;
for (int i = row1; i <= row2; i++) {
for (int j = col1; j <= col2; j++) {
sum += matrix[i][j];
}
}
return sum;
}
}
執行用時:164 ms, 在所有 Java 提交中擊敗了5.14% 的使用者
記憶體消耗:44.1 MB, 在所有 Java 提交中擊敗了51.90% 的使用者