Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)

本文解析LeetCode 1091题,利用Java实现广度优先搜索(BFS)解决二进制矩阵中的最短路径问题。通过count01和count02变量管理遍历层数,九宫格策略和Pair类辅助,详细展示了从起点到终点的最短步数计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Leetcode1091题:二进制矩阵中的最短路径(Java+BFS解法)

1、题目链接

二进制矩阵中的最短路径

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

    public int shortestPathBinaryMatrix(int[][] grid) {
   
        //如果出发点的值为1,则直接返回-1
        if (grid[0][0] == 1) {
   
            return -1;
        }
        int n = grid.length;
        //定义两个变量count01和count02,分别表示BFS现在正在遍历的层和即将遍历的层(count01层的下一层)
        in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值