文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 '.' 表示)和(用 '+' 表示)。
同时给你迷宫的入口 entrance ,用 entrance = [entrancerow, entrancecol] 表示你一开始所在格子的行和列。

每一步操作,你可以往 上,下,左 或者 右 移动一个格子。
你不能进入墙所在的格子,你也不能离开迷宫。
你的目标是找到离 entrance 最近 的出口
出口 的含义是 maze 边界 上的 空格子。entrance 格子 不算 出口。

请你返回从 entrance 到最近出口的最短路径的 步数 ,如果不存在这样的路径,请你返回 -1 。

示例 1:

输入:maze =  [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
输出:1
解释:总共有 3 个出口,分别位于 (1,0),(0,2) 和 (2,3) 。
一开始,你在入口格子 (1,2) 处。
- 你可以往左移动 2 步到达 (1,0) 。
- 你可以往上移动 1 步到达 (0,2) 。
从入口处没法到达 (2,3) 。
所以,最近的出口是 (0,2) ,距离为 1 步。

示例 2:

输入:maze = [["+","+","+"],[".",".","."],["+","+","+"]], entrance = [1,0]
输出:2
解释:迷宫中只有 1 个出口,在 (1,2) 处。
(1,0) 不算出口,因为它是入口格子。
初始时,你在入口与格子 (1,0) 处。
- 你可以往右移动 2 步到达 (1,2) 处。
所以,最近的出口为 (1,2) ,距离为 2 步。

示例 3:

输入:maze = [[".","+"]], entrance = [0,0]
输出:-1
解释:这个迷宫中没有出口。提示:
maze.length == m
maze[i].length == n
1 <= m, n <= 100
maze[i][j] 要么是 '.' ,要么是 '+' 。
entrance.length == 2
0 <= entrancerow < m
0 <= entrancecol < n
entrance 一定是空格子。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/nearest-exit-from-entrance-in-maze
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 标准的 广度优先搜索 模板题
class Solution {public:int nearestExit(vector<vector<char>>& maze, vector<int>& entrance) {int m = maze.size(), n = maze[0].size(), step = 0;typedef pair<int,int> pii;queue<pii> q;q.push({entrance[0], entrance[1]});maze[entrance[0]][entrance[1]] = '+'; // 访问过了vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};while(!q.empty()){int size = q.size();step++;while(size--){   int x = q.front().first;int y = q.front().second;q.pop();for(int k = 0; k < 4; ++k){int nx = x + dir[k][0];int ny = y + dir[k][1];if(nx>=0 && nx<m && ny>=0 && ny<n && maze[nx][ny]!='+') //不为墙{if(nx==0 || nx==m-1 || ny==0 || ny==n-1)return step; // 到达边界出口maze[nx][ny] = '+'; // 标记为走过了q.push({nx, ny});}}}}return -1;}
};

100 ms 29.1 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1926. 迷宫中离入口最近的出口(BFS)相关推荐

  1. 【数据结构与算法】之深入解析“迷宫中离入口最近的出口”的求解思路与算法示例

    一.题目要求 给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 '.' 表示)和墙(用 '+' 表示).同时给你迷宫的入口 entrance ,用 entrance ...

  2. 迷宫中离入口最近的出口问题

    最近在刷力扣,遇到了这么一个问题跟大家分享一下 给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 '.' 表示)和墙(用 '+' 表示).同时给你迷宫的入口 ent ...

  3. LeetCode 505. 迷宫 II(BFS / Dijkstra 最短路径)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 Dijkstra 最短路径 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下 ...

  4. LeetCode 490. 迷宫(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下时,可以选择下一个方 ...

  5. ai中如何插入签名_联络中心如何在机器人和对话式AI迷宫中导航

    CTI论坛(ctiforum.com)(编译/老秦):微软首席执行官萨蒂亚·纳德拉(Satya Nadella)最近表示:"我们已经在两个月内看到了两年的数字化转型."加速数字化在 ...

  6. 迷宫出路代码_如何在软件开发的迷宫中找到自己的出路

    迷宫出路代码 by Tim Kleier 蒂姆·克莱尔(Tim Kleier) 如何在软件开发的迷宫中找到自己的出路 (How to find your way through the corn ma ...

  7. LeetCode.961-2N数组中N次重复的元素(N-Repeated Element in Size 2N Array)

    这是悦乐书的第365次更新,第393篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第227题(顺位题号是961).在大小为2N的数组A中,存在N+1个唯一元素,并且这些元 ...

  8. angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据

    [LeetCode] 442. 数组中重复的数据 题目链接: https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 难度:中 ...

  9. 【困难】数字迷宫,找到迷宫中的单词。

    [困难]数字迷宫,找到迷宫中的单词. 题目描述 输入示例 输出示例 初始代码 解题思路 解题代码 札记 本文章属于付费专栏的文章,购买该文章所隶属的专栏后,即可获得本专栏内的所有文章永久阅读权限.每一 ...

最新文章

  1. linux动态链接库
  2. 30秒Python轻松入门-目录
  3. 本周没有学习,估计用脑过度...
  4. 浏览器窗口可视区域大小相关方法
  5. 单点登录之ajax跨域实现
  6. 拼多多sdk php,学习猿地-【扩展分享】拼多多 API SDK【拼多多开放平台】
  7. 学生兼职工资被拖欠,如何用法律手段追回血汗钱?
  8. 奥克兰大学商学院计算机专业,奥克兰大学的商科专业 推荐三大专业
  9. 考研英语 - advanced
  10. 屏幕小于6英寸的手机_2019小屏手机有哪些 8款6英寸以下小屏全面屏手机推荐 (全文)...
  11. 【FPGA的小娱乐】tft显示屏生成信号辅助测试阵列
  12. 基于f2从零实现移动端可视化编辑器
  13. 【PDF】java使用Itext生成pdf文档--详解
  14. rk3128投影仪lcd显示四周显示不完整解决
  15. 【MySql 数据库综合练习01 】
  16. 软技能入门《质量》系列 -- 密切追踪
  17. CityMaker学习教程07 示例代码的使用CSharp
  18. Java并发编程-无锁CAS与Unsafe类及其并发包Atomic
  19. elo匹配算法c语言,ELO算法教程
  20. java输出abba_java - 有限状态机搜索“ABBA” - 堆栈内存溢出

热门文章

  1. 【Linux分享】Linux常用命令+教程分享
  2. 【R】语言第一课-----安装
  3. java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
  4. android mysql 数据库文件_android mysql数据库文件
  5. 第一季4:Hi3518E_SDK_Vx.x.x.x的SDK目录结构
  6. 鼠标点击实现花瓣雨_每周实验 | 黄金雨
  7. 高阶篇:8.1)开模前评审及提交资料;
  8. xcode8注释快捷键失效问题
  9. 单尺度二维离散小波重构(逆变换)idwt2
  10. BZOJ 1452 [JSOI2009] Count