首页 > 代码库 > [LeetCode] 542. 01 Matrix
[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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。