Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
将一个矩阵中0所在行,以及所在列都置为0.
class Solution {
public:
bool exit_col(vector<int> col_dex,int col)
{
vector<int>::iterator s=find(col_dex.begin(),col_dex.end(),col);//第一个参数是array的起始地址,第二个参数是array的结束地址
if( s !=col_dex.end())//找到
return true;
return false;
}
void setZeroes(vector<vector<int>>& matrix) {
if(matrix.size()==0) return;
int m=matrix.size();
int n=matrix[0].size();
vector<int> col_dex;
vector<int> row_dex;
bool flag=0;
for(int row=0;row<m;row++)
{
for(int col=0;col<n;col++)
{
if(matrix[row][col]==0)
{
if(!exit_col(col_dex,col))
col_dex.push_back(col);
if(!exit_col(row_dex,row))
row_dex.push_back(row);
}
}
}
for(int i=0;i<row_dex.size();i++)
{
for(int j=0;j<n;j++)
matrix[row_dex[i]][j]=0;
}
for(int i=0;i<col_dex.size();i++)
{
for(int j=0;j<m;j++)
matrix[j][col_dex[i]]=0;
}
}
};
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
if(matrix.size()==0) return;
int m=matrix.size();
int n=matrix[0].size();
int flag=1;
for(int row=0;row<m;row++)
{
if(matrix[row][0]==0) flag=0;
for(int col=1;col<n;col++)
{
if(matrix[row][col]==0)
{
matrix[row][0]=0;
matrix[0][col]=0;
}
}
}
for(int row=m-1;row>=0;row--)
{
for(int col=n-1;col>=1;col--)
{
if(matrix[row][0]==0||matrix[0][col]==0)
{
matrix[row][col]=0;
}
}
if(flag==0) matrix[row][0]=0;
}
}
};原文:http://blog.csdn.net/sinat_24520925/article/details/46476625