pair<int,int> findZeros(vector<vector<int>>& matrix) { int m = matrix.size(); int n = matrix[0].size(); for(int i = 0;i < m; i++) { for(int j = 0;j < n; j++) { if (matrix[i][j] == 0) { returnmake_pair(i, j); } } } returnmake_pair(-1,-1); } voidsetZeroes(vector<vector<int>>& matrix){ auto p = findZeros(matrix);
int iz = p.first, jz = p.second; if (iz == -1) return ; int m = matrix.size(); int n = matrix[0].size(); for(int i = iz+1;i < m;i++) { for(int j = 0; j < n;j++) { if (matrix[i][j] == 0) { matrix[i][jz] = 0; matrix[iz][j] = 0; } } }
for(int i = 0;i < m;i++) { if (i == iz) continue; for (int j = 0;j < n;j++) { if (j == jz) continue; if (matrix[i][jz] == 0 || matrix[iz][j] == 0) matrix[i][j] = 0; } } for(int i = 0;i < m; i++) { matrix[i][jz] = 0; } for(int j = 0;j < n; j++) { matrix[iz][j] = 0; }