[leetcode]73. Set Matrix Zeroes

来源:互联网 发布:hyper v linux 编辑:程序博客网 时间:2024/05/22 05:25
// 将第一行第一列用以表示是否存在0class Solution {public:    void setZeroes(vector<vector<int>>& matrix)     {        int m=matrix.size();        if(m==0)return;        int n=matrix[0].size();        if(n==0)return;        bool firstrowiszero = false;          bool firstcoliszero = false;                 for(int i=0;i<m;++i)        {            if (matrix[i][0]==0)                {                    firstcoliszero=true;                    break;                }        }        for(int j=0;j<n;++j)        {            if(matrix[0][j]==0)            {                firstrowiszero=true;                break;            }        }                for(int i = 1; i < m; ++i)              for(int j = 1; j < n; ++j)            {                  if(matrix[i][j] == 0)                 {                      matrix[i][0] = 0;                      matrix[0][j] = 0;                  }              }                   for(int i = 1;i < m; ++i)              for(int j = 1; j < n; ++j)            {                  if(matrix[i][0] == 0||matrix[0][j]==0) //这一步其实已经包括对特殊情况的判断了                {                      matrix[i][j] =0;                }              }                if(firstcoliszero)        {            for(int i=0;i<m;++i)            {                matrix[i][0]=0;            }        }        if(firstrowiszero)        {            for(int j=0;j<n;++j)            {                matrix[0][j]=0;            }        }    }};

0 0
原创粉丝点击