LeetCode542. 01 행렬

11064 단어 LeetCode
542.01 행렬 제목 링크
문제풀이 사고방식: 동적 기획
현재 좌표 최소 거리 = 위아래 좌우 최소 거리 +1 or 현재 좌표는 0
public int[][] updateMatrix(int[][] matrix) {
        int rowLen = matrix.length, colLen = matrix[0].length;
        int[][] result = new int[rowLen][colLen];
        for (int row = 0; row < rowLen; row++) {
            for (int col = 0; col < colLen; col++) {
                result[row][col] = matrix[row][col] == 0 ? 0 : 10000;
            }
        }
        //         、     
        for (int row = 0; row < rowLen; row++) {
            for (int col = 0; col < colLen; col++) {
                if (row > 0) {
                    result[row][col] = Math.min(result[row][col], result[row - 1][col]+1);
                }
                if (col > 0) {
                    result[row][col] = Math.min(result[row][col], result[row][col - 1] + 1);
                }
            }
        }
        //         、     
        for (int row = rowLen - 1; row >= 0; row--) {
            for (int col = colLen - 1; col >= 0; col--) {
                if (row+1<rowLen) {
                    result[row][col] = Math.min(result[row][col], result[row + 1][col]+1);
                }
                if (col + 1 < colLen) {
                    result[row][col] = Math.min(result[row][col], result[row][col + 1] + 1);
                }
            }
        }
        return result;
    }

좋은 웹페이지 즐겨찾기