Untitled

 avatar
unknown
plain_text
a year ago
901 B
4
Indexable
class NumMatrix {
public:
    vector<vector<int>>pre;
    NumMatrix(vector<vector<int>>& mat) {
        int r=mat.size(), c=mat[0].size();
        pre.resize(r,vector<int>(c,0));

        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
                pre[i][j]=mat[i][j];
                if(i>0) pre[i][j]+=pre[i-1][j];
                if(j>0) pre[i][j]+=pre[i][j-1];
                if(i>0 && j>0) pre[i][j]-=pre[i-1][j-1];
            }
        }
    }
    
    int sumRegion(int r1, int c1, int r2, int c2) {
        int res=pre[r2][c2];
        if(r1>0) res-=pre[r1-1][c2];
        if(c1>0) res-=pre[r2][c1-1];
        if(r1>0 && c1>0) res+=pre[r1-1][c1-1];
        return res;
    }
};

/**
 * Your NumMatrix object will be instantiated and called as such:
 * NumMatrix* obj = new NumMatrix(matrix);
 * int param_1 = obj->sumRegion(row1,col1,row2,col2);
 */
Editor is loading...
Leave a Comment