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;
}
}
leetcode 1091. 二进制矩阵中的最短路径
最新推荐文章于 2023-05-26 10:49:58 发布