Set Matrix Zeroes

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;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值