Set Matrix Zeroes

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

Follow up:

Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?

class Solution {
public:
    void setZeroes(vector<vector<int> > &matrix) 
    {
        if(matrix.size()==0 || matrix[0].size()==0return;
        vector<int> zerox;
        vector<int> zeroy;
        for(int i=0;i<matrix.size();i++)
            for(int j=0;j<matrix[0].size();j++)
                if(matrix[i][j]==0)
                {
                    zerox.push_back(i);
                    zeroy.push_back(j);
                }
        for(int i=0;i<zerox.size();i++)
        {
            for(int k=0;k<matrix.size();k++)
                matrix[k][zeroy[i]]=0;
            for(int k=0;k<matrix[0].size();k++)
                matrix[zerox[i]][k]=0;
        }
    }
}; 
posted @ 2014-05-29 16:46  erictanghu  阅读(119)  评论(0编辑  收藏  举报