LeetCode 304. Range Sum Query 2D

题目

二维的,那就二维前缀和数组

class NumMatrix {
public:
    int prefix[1005][1005];
    NumMatrix(vector<vector<int>>& matrix) {
        
        memset(prefix,0,sizeof(prefix));
        for(int i=0;i<matrix.size();i++)
        {
            for(int j=0;j<matrix[i].size();j++)
            {
                prefix[i+1][j+1]=prefix[i][j+1]+prefix[i+1][j]-prefix[i][j]+matrix[i][j];
            }
        }
        
    }
    
    int sumRegion(int row1, int col1, int row2, int col2) {
        
        return prefix[row2+1][col2+1]-prefix[row1][col2+1]-prefix[row2+1][col1]+prefix[row1][col1];
        
    }
};

/**
 * Your NumMatrix object will be instantiated and called as such:
 * NumMatrix* obj = new NumMatrix(matrix);
 * int param_1 = obj->sumRegion(row1,col1,row2,col2);
 */
原文地址:https://www.cnblogs.com/dacc123/p/13037822.html