Leetcode1091题:二进制矩阵中的最短路径(Java+BFS解法)
1、题目链接
二进制矩阵中的最短路径
2、解题思想
- 使用广度优先搜索(BFS)的基本思想,目标位置 (n-1, n-1) 如果在第 x 层被搜索到,则路径途径的单元格数即为 x+1。
- 我在这里使用了两个变量 count01 和 count02,分别用于记录正在遍历的层剩余的单元格数和即将要遍历的下一层的单元格数(不断加入新单元格),当 count01=0 时,这一层就遍历结束了,此时如果没有发现目标位置,则需要往下一层继续遍历,并将 count02 的值赋给 count01,count02 的值变为 0。
- 对于题目给定的 8 个方向,我在这里使用了一种九宫格的形式。
- 还有一个小技巧是 Java 中有一个 Pair 类,是一个没有严格映射关系的键值对,当然也可以使用 Integer 数组。
3、Java代码
class Solution {
public int shortestPathBinaryMatrix(int[][] grid) {
if (grid[0][0] == 1) {
return -1;
}
int n = grid.length;
in