Práctica diaria de preguntas de algoritmo --- Día 79: Reducción a cero de la matriz

¡Acostúmbrate a escribir juntos! Este es el día 14 de mi participación en el "Desafío de actualización de abril del nuevo plan diario de Nuggets", haga clic para ver los detalles del evento .

1. Descripción del problema

Dada una  m x n matriz, si un elemento es  0 , establezca todos los elementos en su fila y columna en  0  . Utilice un algoritmo en  el lugar .

Enlace temático: Puesta a cero de matrices

En segundo lugar, los requisitos de la materia.

Ejemplo 1

2.png

输入: matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出: [[1,0,1],[0,0,0],[1,0,1]]
复制代码

Ejemplo 2

3.png

输入: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]
复制代码

visitar

1.数组
2.建议用时15~25min
复制代码

3. Análisis de problemas

Esta es una pregunta que examina la lógica del pensamiento de matriz Para una matriz dada al principio, primero se realiza un juicio de bucle.

Si la posición contiene 0, entonces para registrar esta posición, ¿qué registro se usa?

Podemos construir las dos matrices por separado.

vector<int>row(m),col(n);//行、列数组
复制代码

Almacene la posición 0, los datos de toda esta fila y columna.

Finalmente, recorra la fila y la columna donde se encuentra el elemento actual. Si se encuentra row[i]或者col[j]que es igual a 1, entonces establezca el elemento en 0.

En cuarto lugar, la implementación de la codificación.

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int i,j,p=0,m=matrix.size(),n=matrix[0].size();//初始化数据
        vector<int>row(m),col(n);//行、列数组
        for(i=0;i<m;i++)//遍历求解位置
        {
            for(j=0;j<n;j++)
            {
                if(matrix[i][j]==0)
                {
                    row[i]=col[j]=1;//暂存行、列
                }
            }
        }
        for(i=0;i<m;i++)//之前记录位置的行、列置为0
        {
            for(j=0;j<n;j++)
            {
                if(row[i]||col[j])
                {
                    matrix[i][j]=0;
                }
            }
        }
    }
};

复制代码

5. Resultados de la prueba

4.png

1.png

Supongo que te gusta

Origin juejin.im/post/7086405420687818783
Recomendado
Clasificación