1. 程式人生 > 其它 >力扣304題:二維區域和檢索

力扣304題:二維區域和檢索

技術標籤:力扣演算法題演算法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% 的使用者