1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class NumMatrix { public: NumMatrix(vector<vector<int>>& matrix) : dp(vector<vector<int>>(matrix.size() + 1, vector<int>(matrix[0].size() + 1, 0))), rows(matrix.size()), cols(matrix[0].size()) { for(int i = 1; i < rows + 1; ++i) { for(int j = 1; j < cols + 1; ++j) { dp[i][j] = matrix[i - 1][j - 1] + dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]; } } } int sumRegion(int row1, int col1, int row2, int col2) { return dp[row2 + 1][col2 + 1] - dp[row1][col2 + 1]- dp[row2 + 1][col1] + dp[row1][col1]; } private: vector<vector<int>> dp; int rows, cols; };
|