class Solution { public: void setRow(vector<vector<int> > &matrix, int i){ for(int j = 0; j < matrix[0].size(); j++){ matrix[i][j] = 0; } } void setCol(vector<vector<int> > &matrix, int j){ for(int i = 0; i < matrix.size(); i++){ matrix[i][j] = 0; } } void setZeroes(vector<vector<int> > &matrix) { // Start typing your C/C++ solution below // DO NOT write int main() function if(matrix.empty()) return; int M = matrix.size(); int N = matrix[0].size(); bool isRowZero = false, isColZero = false; for(int j = 0; j < N; j++){ if(matrix[0][j] == 0){ isRowZero = true; break; } } for(int i = 0; i < M; i++){ if(matrix[i][0] == 0){ isColZero = true; break; } } for(int i = 1; i < M; i++){ for(int j = 1; j < N; j++){ if(matrix[i][j] == 0){ matrix[i][0] = 0; matrix[0][j] = 0; } } } for(int j = 1; j < N; j++){ if(matrix[0][j] == 0){ setCol(matrix, j); } } for(int i = 1; i < M; i++){ if(matrix[i][0] == 0){ setRow(matrix, i); } } if(isRowZero) setRow(matrix, 0); if(isColZero) setCol(matrix, 0); } };