leetcode 73 两种解法~~,没有一个是我想出来的,哈哈~~
one
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m=matrix.size(),n=matrix[0].size();
bool col=false,row=false;
for(int i=0;i!=m;++i)
{
if(!matrix[i][0])
{
col=true;
break;
}
}
for(int j=0;j!=n;++j)
{
if(!matrix[0][j])
{
row=true;
break;
}
}
for(int i=1;i!=m;++i)
{
for(int j=1;j!=n;++j)
{
if(!matrix[i][j])
{
matrix[i][0]=matrix[0][j]=0;
}
}
}
for(int i=1;i!=m;++i)
{
for(int j=1;j!=n;++j)
{
if(!matrix[i][0]||!matrix[0][j])
{
matrix[i][j]=0;
}
}
}
if(col)
{
for(int i=0;i!=m;++i)
{
matrix[i][0]=0;
}
}
if(row)
{
for(int j=0;j!=n;++j)
{
matrix[0][j]=0;
}
}
}
};
two
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m=matrix.size(),n=matrix[0].size();
bool col=false;
for(int i=0;i<m;++i)
{
if(!matrix[i][0]) col=true;
for(int j=1;j<n;++j)
{
if(!matrix[i][j]) matrix[i][0]=matrix[0][j]=0;
}
}
for(int i=m-1;i>=0;--i)
{
for(int j=1;j<n;++j)
{
if(!matrix[i][0]||!matrix[0][j]) matrix[i][j]=0;
}
}
if(col)
{
for(int i=0;i<m;++i)
{
matrix[i][0]=0;
}
}
}
};
END