1
// Using row prefix sum O(m)3
vector<vector<int>> prefix;6
NumMatrix(vector<vector<int>> &matrix) {7
int m = matrix.size(), n = matrix[0].size();8
for (int i = 0; i < m; i++) {10
row[0] = matrix[i][0];11
for (int j = 1; j < n; j++) {12
row[j] = row[j - 1] + matrix[i][j];14
prefix.push_back(row);18
int sumRegion(int row1, int col1, int row2, int col2) {20
for (int i = row1; i <= row2; i++) {21
sum += prefix[i][col2];22
if (col1 > 0) sum -= prefix[i][col1 - 1];28
// Using mat prefix sum O(1)30
vector<vector<int>> prefix;33
NumMatrix(vector<vector<int>> &matrix) {34
int m = matrix.size(), n = matrix[0].size();35
prefix = vector<vector<int>>(m + 1, vector<int>(n + 1, 0));36
prefix[1][1] = matrix[0][0];37
for (int i = 1; i <= m; i++) {38
for (int j = 1; j <= n; j++) {40
prefix[i - 1][j] + prefix[i][j - 1] + matrix[i - 1][j - 1] - prefix[i - 1][j - 1];45
int sumRegion(int row1, int col1, int row2, int col2) {47
sum += prefix[row2 + 1][col2 + 1];48
sum -= prefix[row1][col2 + 1];49
sum -= prefix[row2 + 1][col1];50
sum += prefix[row1][col1];