具体不知如何解决。
class NumMatrix
{
public:
vector<vector<int>>news_matrix;
NumMatrix(vector<vector<int>>& matrix)
{
if(matrix.size()==0)return;
int rows=matrix.size();
int cols=matrix[0].size();
vector<vector<int>>news_matrix(rows,vector<int>(cols,1));
for(int i=0;i<rows;i++)
{
news_matrix[i][0]=matrix[i][0];
for(int j=1;j<cols;j++)
{
news_matrix[i][j]=matrix[i][j]+news_matrix[i][j-1];
}
}
}
//一直出现空指针情况会不会是题目所给的左上角或者右下角的r,c超过数组范围导致越界;
int sumRegion(int row1, int col1, int row2, int col2)
{
int sum=0;
if(col1==0)
{
for(int i=row1;i<=row2;i++)
{
sum+=news_matrix[i][col2];
}
}
else
{
for(int i=row1;i<=row2;i++)
{
sum+=news_matrix[i][col2]-news_matrix[i][col1-1];
}
}
return sum;
}
};
/**
* Your NumMatrix object will be instantiated and called as such:
* NumMatrix* obj = new NumMatrix(matrix);
* int param_1 = obj->sumRegion(row1,col1,row2,col2);
*/