标签:
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