leetcode 1091. 二进制矩阵中的最短路径

mac2024-05-27  39

class Solution { public int shortestPathBinaryMatrix(int[][] grid) { if (grid[0][0] == 1) { return -1; } int[][] direction = {{1,1},{1,0},{1,-1},{0,1},{0,-1},{-1,1},{-1,0},{-1,-1}}; Queue<int[]> queue = new LinkedList<>(); int m = grid.length, n = grid[0].length; int pathLength = 0; queue.add(new int[]{0,0}); while (!queue.isEmpty()) { int size = queue.size(); pathLength++; while (size-- > 0) { int[] cur = queue.poll(); int cr = cur[0], cc = cur[1]; if (cr == m - 1 && cc == n - 1) { return pathLength; } for (int[] d : direction) { int nr = cr + d[0], nc = cc + d[1]; if (nr < 0 || nc < 0 || nr >= m || nc >= n || grid[nr][nc] == 1) { continue; } grid[nr][nc] = 1; queue.add(new int[]{nr,nc}); } } } return -1; } }
最新回复(0)