void setZeroes(vector<vector<int>>& matrix) {
if(matrix.empty() || matrix[0].empty())
return;
int row = matrix.size(),col = matrix[0].size();
bool firstRow = false,firstCol=false;
//判断第一行是否有0
for(int j=0;j<col;++j)
if(matrix[0][j]==0){
firstRow=true;
break;
}
//判断第一列是否有0
for(int i=0;i<row;++i)
if(matrix[i][0]==0){
firstCol=true;
break;
}
//如果某个元素为0,则将所在行所在列的第一个元素置为0
for(int i=1;i<row;++i)
for(int j=1;j<col;++j)
if(matrix[i][j]==0){
matrix[0][j]=0;
matrix[i][0]=0;
}
//遍历,如果所在行或列的第一个元素为0,则置为0
for(int i=1;i<row;++i)
for(int j=1;j<col;++j)
if(matrix[i][0]==0 || matrix[0][j]==0)
matrix[i][j]=0;
//如果第一行有0,则全部第一行全部置为0
if(firstRow)
for(int j=0;j<col;++j)
matrix[0][j]=0;
//如果第一列有0,则全部第一列全部置为0
if(firstCol)
for(int i=0;i<row;++i)
matrix[i][0]=0;
return;
}
73. 矩阵置零/C++
最新推荐文章于 2022-02-17 15:01:29 发布