leetcode 542. 01 Matriz (01 Matriz)

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Solo hay valores 0 y 1 en la matriz y se devuelve la distancia desde cada celda al 0 más cercano.

Ideas:

La distancia del elemento 0 a sí mismo es 0,
solo considere la distancia del 1 al 0 más cercano.

BFS.

Primero actualice la distancia en el elemento 1 hasta el infinito.
La posición 0 se carga en la cola.
A partir de cada 0, suba, baje, izquierda y derecha en 4 direcciones. Si encuentra 0, no necesita lidiar con él. Si encuentra 1, la distancia es la distancia actual + 1.

Si la distancia actual +1 es menor que la distancia de la siguiente ubicación,
actualice la distancia de la siguiente ubicación a la distancia actual +1 y, al mismo tiempo, indique que la distancia desde la siguiente ubicación debe actualizarse y cargarse en la cola.

    public int[][] updateMatrix(int[][] mat) {
    
    
        int rows = mat.length;
        int cols = mat[0].length;

        Queue<int[]> queue = new LinkedList<>();
        int max = rows * cols;

        //初始化,0处加入queue, 1处设为最大值
        for(int r = 0; r < rows; r++) {
    
    
            for(int c = 0; c < cols; c++) {
    
    
                if(mat[r][c] == 0) queue.offer(new int[]{
    
    r,c});
                else mat[r][c] = max;
            }
        }

        int[] direc = new int[]{
    
    -1,0,1,0,-1};

        while(!queue.isEmpty()) {
    
    
            int[] cur = queue.poll();
            for(int i = 0; i < 4; i++) {
    
    
                int nextR = cur[0] + direc[i];
                int nextC = cur[1] + direc[i+1];
                if(nextR >= 0 && nextR < rows && nextC >= 0 && nextC < cols && mat[cur[0]][cur[1]]+1 < mat[nextR][nextC]){
    
    
                    mat[nextR][nextC] = mat[cur[0]][cur[1]]+1;
                    queue.offer(new int[]{
    
    nextR, nextC});
                }
            }
        }
        return mat;
    }

Supongo que te gusta

Origin blog.csdn.net/level_code/article/details/132402351
Recomendado
Clasificación