[LeetCode] 542. 01 Matrix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 542. 01 Matrix相关的知识,希望对你有一定的参考价值。
https://leetcode.com/problems/01-matrix/
public class Solution { public int[][] updateMatrix(int[][] matrix) { if (matrix == null || matrix.length == 0) { return null; } int[][] diff = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; Queue<Integer> queue = new LinkedList<>(); int[][] result = new int[matrix.length][matrix[0].length]; for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[0].length; j++) { if (matrix[i][j] == 0) { result[i][j] = 0; queue.add(i * result[0].length + j); } else { result[i][j] = Integer.MAX_VALUE; } } } while (!queue.isEmpty()) { int index = queue.poll(); int i = index / result[0].length; int j = index - i * result[0].length; for (int[] current : diff) { int x = i + current[0]; int y = j + current[1]; if (x < 0 || x >= result.length || y < 0 || y >= result[0].length || result[x][y] <= result[i][j]) { continue; } result[x][y] = result[i][j] + 1; queue.offer(x * result[0].length + y); } } return result; } }
思路参考:http://www.cnblogs.com/grandyang/p/6602288.html
以上是关于[LeetCode] 542. 01 Matrix的主要内容,如果未能解决你的问题,请参考以下文章