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

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

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

题目

在这里插入图片描述

题目解析及思路

题目要求找到一条左上到右下的最短路径

八方向bfs板子

代码

class Solution {
    int dx[8] = {0,1,0,-1,1,1,-1,-1},dy[8] = {1,0,-1,0,-1,1,-1,1};
public:
    int shortestPathBinaryMatrix(vector<vector<int>>& grid) {
        int n = grid.size();
        if(grid[0][0] == 1) return -1;
        queue<pair<int,int>> q;
        vector<vector<int>> dis(n,vector<int>(n,INT_MAX));

        auto bfs = [&]()->void{
            while(!q.empty()){
                auto [x,y] = q.front();
                q.pop();
                for(int i=0;i<8;i++){
                    int sx = x + dx[i];
                    int sy = y + dy[i];
                    if(sx < 0 || sx >= n || sy < 0 || sy >= n || grid[sx][sy] == 1){
                        continue;
                    }
                    if(dis[sx][sy] > dis[x][y] + 1){
                        dis[sx][sy] = dis[x][y] + 1;
                        q.emplace(sx,sy);
                    }
                }
            }
        };

        q.emplace(0,0);
        dis[0][0] = 1;
        bfs();
        return dis[n-1][n-1] > INT_MAX / 2 ? -1 : dis[n-1][n-1];
    }
};

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

相关文章:

  • Flutter - 布局Widget
  • Linux的文件与目录管理
  • BUU40 [CSCCTF 2019 Qual]FlaskLight1【SSTI】
  • 有哪些信息安全/网络安全/渗透测试/众测/CTF/红蓝攻防/漏洞测试等前沿技术/研究/技巧获取渠道?
  • Java 实现快速排序算法:一条快速通道,分而治之
  • vue3的生命周期
  • 如何将图片档案信息读取出来?并把档案信息相关性进行关联
  • Skype for Business网络延迟怎么办?
  • 关于冯诺依曼体系结构与操作系统的更基础、更详细的解析,结合技术原理与实现细节,帮助系统性学习
  • Kafka 赋能高效消息队列管理:从原理到实战
  • 【JAVA-数据结构】Lambda表达式
  • Docker Hub 使用规则与限制全解析
  • 计算机视觉算法实战——高精度分割(主页有源码)
  • 计算机毕业设计SpringBoot+Vue.js中小企业设备管理系统(源码+文档+PPT+讲解)
  • C++ 红黑树万字详解(含模拟实现(两种版本))
  • 在 Vue 3 的 Composition API 中,如何实现动态组件
  • 二叉树的概念和静态实现 【复习笔记】
  • C++中map容器常见用法(AI)
  • ISIS(中间系统到中间系统)——基础
  • 跟着deepseek再学习git