矩阵填0--空间复杂度(1)

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int m=matrix.size();
        int n=matrix[0].size();
        bool a=false,b=false;
        for(int i=0;i<m;i++)
        if(matrix[i][0]==0)
        {
            a=true;
            break;
        }
        for(int j=0;j<n;j++)
        if(matrix[0][j]==0)
        {
            b=true;
            break;
        }
        
        for(int i=1;i<m;i++)
        for(int j=1;j<n;j++)
        {
            if(matrix[i][j]==0)
            matrix[i][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(a==true)
        for(int i=0;i<m;i++)matrix[i][0]=0;
        if(b==true)
        for(int j=0;j<n;j++)matrix[0][j]=0;
    }
};

你可能感兴趣的:(算法)