Heim >Java >javaLernprogramm >Bereichssummenabfrage – Unveränderlich

Bereichssummenabfrage – Unveränderlich

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-04 02:24:40595Durchsuche

Range sum query - Immutable

Problem

TC: O(n*m) zum Erstellen der Präfix[][]-Summenmatrix, O(row1 row2) zum Berechnen der Summe des gegebenen Rechtecks
SC: O(n*m) für die Verwendung der Präfix[][]-Summenmatrix

class NumMatrix {
    int prefix[][];
    public NumMatrix(int[][] matrix) {
        prefix = new int[matrix.length][matrix[0].length];
        for(int i=0;i<matrix.length;i++){
            int current = 0;
            for(int j = 0;j<matrix[0].length;j++){
                current+=matrix[i][j];
                prefix[i][j] = current;
            }
        }
    }

    public int sumRegion(int row1, int col1, int row2, int col2) {
        int sum =0;
        for(int i =row1;i<=row2;i++){
            int right = prefix[i][col2];
            int left = (col1>0) ? prefix[i][col1-1] : 0;
            sum+=right-left;
        }
        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);
 */

Das obige ist der detaillierte Inhalt vonBereichssummenabfrage – Unveränderlich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn