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?
classSolution { public: voidsetZeroes(vector<vector<int>>& matrix){ int m = matrix.size(); if(!m){ return; } int n = matrix[0].size(); vector<int> rowFlag(m, 1), colFlag(n, 1); for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ if(matrix[i][j] == 0){ rowFlag[i] = 0; colFlag[j] = 0; } } } for(int i = 0; i < m; i++){ if(!rowFlag[i]){ setZeroRow(matrix, i, n); } } for(int i = 0; i < n; i++){ if(!colFlag[i]){ setZeroCol(matrix, i, m); } } } voidsetZeroRow(vector<vector<int>> &matrix, int row, int n){ for(int i = 0; i < n; i++) matrix[row][i] = 0; } voidsetZeroCol(vector<vector<int>> &matrix, int col, int m){ for(int i = 0; i < m; i++) matrix[i][col] = 0; } };