Java aplicación LeetCode 542 01 matriz (violencia Dafa, pros y contras de conveniencia)

542.01 matriz

Dada una matriz compuesta de 0 y 1, cada uno de los elementos para encontrar el cero más próximo.

La distancia entre dos elementos adyacentes 1.

Ejemplo 1:
Entrada:

0 0 0
0. 1 0
0 0 0
Salida:

0 0 0
0. 1 0
0 0 0
Ejemplo 2:
Entrada:

0 0 0
0 0. 1
. 1. 1. 1
de salida:

0 0 0
0 0 1
. 1. 1 2
Nota:

Un determinado número de elementos en la matriz no es más de 10.000.
Teniendo en cuenta al menos un elemento en la matriz es cero.
Sólo los elementos de matriz adyacentes en cuatro direcciones: arriba, abajo, izquierda y derecha.

class Solution {
    private int row;
    private int col;
    private int[][] vector = new int[][]{{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

    /**
     * DP(两次遍历,可 AC)
     */
    public int[][] updateMatrix(int[][] matrix) {
        row = matrix.length;
        col = matrix[0].length;
        // 第一次遍历,正向遍历,根据相邻左元素和上元素得出当前元素的对应结果
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (matrix[i][j] == 1) {
                    matrix[i][j] = row + col;
                }
                if (i > 0) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i - 1][j] + 1);
                }
                if (j > 0) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i][j - 1] + 1);
                }
            }
        }
        // 第二次遍历,反向遍历,根据相邻右元素和下元素及当前元素的结果得出最终结果
        for (int i = row - 1; i >= 0; i--) {
            for (int j = col - 1; j >= 0; j--) {
                if (i < row - 1) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i + 1][j] + 1);
                }
                if (j < col - 1) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i][j + 1] + 1);
                }
            }
        }
        return matrix;
    }
}
Liberadas 1629 artículos originales · ganado elogios 20000 + · vistas 2,76 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105089759
Recomendado
Clasificación