【second】Set Matrix Zeroes

 

    void setZeroes(vector<vector<int> > &matrix) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(matrix.empty())
            return;
        int m = matrix.size();
        int n = matrix[0].size();
        bool first_row,first_col;
        first_row = first_col = false;
        int i,j;
        for(j=0;j<n;j++)
        {
            if(matrix[0][j]==0)
            {
                first_row = true;
                break;
            }
        }
        for(i=0;i<m;i++)
        {
            if(matrix[i][0]==0)
            {
                first_col = true;
                break;
            }
        }
        
        for(i=1;i<m;i++)
        {
            for(j=1;j<n;j++)
            {
                if(matrix[i][j]==0)
                    matrix[i][0] = matrix[0][j] = 0;
            }
        }
        
        for(j=1;j<n;j++)
        {
            if(matrix[0][j]==0)
            {
                for(i=1;i<m;i++)
                    matrix[i][j] = 0;
            }
        }
        
        for(i=1;i<m;i++)
        {
            if(matrix[i][0]==0)
            {
                for(j=1;j<n;j++)
                    matrix[i][j] = 0;
            }
        }
        
        if(first_row)
        {
            for(j=0;j<n;j++)
                matrix[0][j] = 0;
        }
        
        if(first_col)
        {
            for(i=0;i<m;i++)
                matrix[i][0] = 0;
        }
    }

  

posted @ 2013-10-23 19:18  summer_zhou  阅读(102)  评论(0编辑  收藏  举报