Set Matrix Zeroes

来源:互联网 发布:通讯录医生是什么软件 编辑:程序博客网 时间:2024/06/09 18:17
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        vector<vector<int>> ivec(matrix);
        
        int m=matrix.size();
        int n=matrix[0].size();
        vector<int> zero(n,0);
        for(int i=0;i<m;i++)
          {
              for(int j=0;j<n;j++)
            {
               if(matrix[i][j]==0)
               {
                   for(int k=0;k<m;k++)
                    ivec[k][j]=0;        //注意
                 ivec[i]=vector<int>(n,0);  // ivec[i].assign(zero.begin(),zero.end());
               }
            }
          }
         matrix=ivec;    //两个vector可以直接用等于号;
          return;
    }

};


两个bool数组,存下每行每列是否有0; 

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
       // vector<vector<int>> ivec(matrix);
        
        int m=matrix.size();
        int n=matrix[0].size();
        bool row[m]={0};
        bool col[n]={0};
        
        for(int i=0;i<m;i++)
          {
              for(int j=0;j<n;j++)
            {
               if(matrix[i][j]==0)
               {
                row[i]=1;
                col[j]=1;
               }
            }
          }
          for(int i=0;i<m;i++)
           {
               if(row[i])
             fill(&matrix[i][0],&matrix[i][0]+n,0);
            
             }
             
        for(size_t j=0;j<n;++j)
        {
          if(col[j])
          {
             for(size_t i=0;i<m;++i)
             {
              matrix[i][j]=0;
             }
          }
        }
          
         
          return;
    }
};

0 0