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?
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);
}
}
};