LeetCode Set Matrix Zeroes

来源:互联网 发布:如何设置淘宝直通车 编辑:程序博客网 时间:2024/04/29 16:19

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.

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?

Solution:

class Solution {public:    void setZeroes(vector<vector<int> > &matrix) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(matrix.empty()||matrix[0].empty())            return;        int count=0,next=0;        for(int i=0;i<matrix.size()-1;++i){            for(int j=0;j<matrix[i].size();++j){                if(matrix[i][j]==0){                    --count;                    if(matrix[i+1][j]!=0)                        ++next;                    matrix[i+1][j]=0;                }            }            if(count<0){                matrix[i].assign(matrix[i].size(),0);            }            count=next;            next=0;        }        for(int i=0;i<matrix.back().size();++i){            if(matrix.back()[i]==0){                --count;                for(int j=0;j<matrix.size()-1;++j){                    matrix[j][i]=0;                }            }        }        if(count<0){            matrix.back().assign(matrix.back().size(),0);        }    }};

原创粉丝点击