Directorio de artículos
1. Fuente del tema
Enlace: 73. Matrix Zeroing
2. Análisis de temas
Para preguntas de pensamiento puro, es muy bueno usar el mejor método para salvar al país.
Utilice las variables de la primera fila y la primera columna para indicar si hay 0 en esta columna y fila. De esta forma, será independiente en el momento de la recuperación.
- Complejidad del tiempo : O (n 2) O (n ^ 2)O ( n2 )。
- Complejidad espacial : O (1) O (1)O ( 1 )
Código:
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int n = matrix.size(), m = matrix[0].size();
if (!n || !m) return ;
int r0 = 1, c0 = 1;
for (int i = 0; i < m; i ++ ) if (!matrix[0][i]) r0 = 0;
for (int i = 0; i < n; i ++ ) if (!matrix[i][0]) c0 = 0;
for (int i = 1; i < m; i ++ )
for (int j = 1; j < n; j ++ )
if (!matrix[j][i])
matrix[0][i] = 0;
for (int i = 1; i < n; i ++ )
for (int j = 1; j < m; j ++ )
if (!matrix[i][j])
matrix[i][0] = 0;
for (int i = 1; i < n; i ++ )
if (!matrix[i][0])
for (int j = 1; j < m; j ++ )
matrix[i][j] = 0;
for (int i = 1; i < m; i ++ )
if (!matrix[0][i])
for (int j = 1; j < n; j ++ )
matrix[j][i] = 0;
if (!r0) for (int i = 0; i < m; i ++ ) matrix[0][i] = 0;
if (!c0) for (int i = 0; i < n; i ++ ) matrix[i][0] = 0;
}
};