当前位置: 首页 > article >正文

day-102 二进制矩阵中的最短路径

在这里插入图片描述
思路
BFS

解题过程
从起点依次向八个方向尝试(之后也一样),如果某个位置在矩阵内且值为0且没有访问过,将其添加到一个队列中,依次类推,直到到达出口

Code

class Solution {
    public int shortestPathBinaryMatrix(int[][] grid) {
        int ans = 1;
        int nn = grid.length;
        int vis[][] = new int[nn][nn];
        vis[0][0] = 1;
        LinkedList<int[]> q = new LinkedList<>();
        if (grid[0][0] == 1)
            return -1;
        q.add(new int[] { 0, 0 });
        while (!q.isEmpty()) {
            int len = q.size();
            for (int i = 0; i < len; i++) {
                int arr[] = q.poll();
                int x = arr[0];
                int y = arr[1];
                if (x == nn - 1 && y == nn - 1)
                    return ans;
                for (int m = x - 1; m <= x + 1; m++) {
                    for (int n = y - 1; n <= y + 1; n++) {
                        if (0 <= m && m < nn && 0 <= n && n < nn && vis[m][n] == 0
                                && grid[m][n] == 0) {
                            grid[m][n] = 1;
                            q.offer(new int[] { m, n });
                        }
                    }
                }
            }
            ans++;
        }
        return -1;
    }

}

作者:菜卷
链接:https://leetcode.cn/problems/shortest-path-in-binary-matrix/solutions/3034582/er-jin-zhi-ju-zhen-zhong-de-zui-duan-lu-xsg22/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.kler.cn/a/459816.html

相关文章:

  • Python实现接口签名调用
  • 【设计模式】 基本原则、设计模式分类
  • 攻防靶场(29):目录权限和文件权限 ICMP
  • 《机器学习》——线性回归模型
  • C++ 设计模式:模板方法(Template Method)
  • Java 集合框架之 List、Set 和 Map 的比较与使用
  • STM32 高级 WIFi案例1:测试AT指令
  • 数据库自增 id 过大导致前端时数据丢失
  • 活动预告 |【Part1】Microsoft Azure 在线技术公开课:数据基础知识
  • Debian12使用RKE2离线部署3master2node三主两从的k8s集群详细教程
  • 通过iptables限制docker 容器的运行端口
  • Spring Boot 项目 与 其他依赖版本兼容对应表
  • K8S网络流量路径
  • 数据库系列之分布式数据库下误删表怎么恢复?
  • UE5材质节点CameraDepthFade
  • Kafka安全优化文档:漏洞修复到安全加固
  • 【已解决】PDF文档有密码怎么办(2024新)免费在线工具PDF2Go
  • 项目需求分析流程
  • 用AI生成PPT,告别繁琐,一键生成高效方案
  • 深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)
  • Spring Boot 中 RabbitMQ 的使用
  • Java虚拟机——JVM
  • 安装与配置
  • 【Scala】图书项目系统代码演练3.1/BookService
  • 【信号滤波 (下)】采样条件,多种滤波算法对比(Matlab/C++)
  • 【技术实战】R语言统计分析与可视化从入门到精通