【LeetCode】304. 二维区域和检索 - 矩阵不可变
class NumMatrix {
public:
vector<vector<int>> sums;
NumMatrix(vector<vector<int>>& matrix) {
int m = matrix.size();
if(m>0)
{
int n = matrix[0].size();
sums.resize(m+1,vector<int>(n+1)); //1个容量为m+1行,n+1列的2维数组
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
sums[i+1][j+1]=-sums[i][j]+sums[i][j+1]+sums[i+1][j]+matrix[i][j];
}
}
}
}
int sumRegion(int row1, int col1, int row2, int col2) {
return sums[row2+1][col2+1]-sums[row1][col2+1]-sums[row2+1][col1]+sums[row1][col1];
}
};
注意二维前缀和的生成,和二维和的生成。

浙公网安备 33010602011771号