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

文章目录

    • 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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angularjs 表单验证 和 页面初始化闪烁

1.页面初始化闪烁 因为angularjs需要先解析html页面的指令的&#xff0c;才可以启动指令功能。angularjs需要等待整个文档加载完成才会解析&#xff0c;所以会出现一些{{xxx}}, ng-show, ng-hide指令内容一闪而过的问题,解决办法&#xff1a; 在存在闪烁的元素上添加ng-cloak …

python gis 实例_用Python作GIS之五:从示例入手—example函数

进入STARS后&#xff0c;最简单的学习方法就是演示示例数据。对于源码的分析也可以从这里入手。以下为出发菜单项“Example Project”的函数example&#xff1a;def example(self):"""canned loading of data files and matrices for debugging""&quo…

java jdbc操作类_Java-编写一个jdbc操作类

package数据库操作类;/** Db.javaCreated on 2007年8月20日, 上午 8:37*/import java.io.*;import java.sql.*;importjava.util.Properties;public classDB {privateString driver;privateString url;privateString user;privateString password;privateConnection conn;privat…

第一次冲刺第二天

昨天是冲刺的第一天&#xff0c;我完成了自己认领的任务&#xff0c;屏蔽系统锁屏&#xff0c;在实现过程中我发现了困难&#xff0c;经过各种查资料和询问同学&#xff0c;最后也没能通过敲代码实现屏蔽系统锁屏的功能&#xff0c;所以最后我决定实现调出系统锁屏页面&#xf…

LeetCode 1930. 长度为 3 的不同回文子序列(计数)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s &#xff0c;返回 s 中 长度为 3 的不同回文子序列 的个数。 即便存在多种方法来构建相同的子序列&#xff0c;但相同的子序列只计数一次。 回文 是正着读和反着读一样的字符串。 子序列 是由原字符串删除其中部分字符&…

修改telnet的用户名密码_远程管理设备telnet的N种设置方法

作为一名网络工程师&#xff0c;日常管理和配置设备&#xff0c;可以选择的方法有很多&#xff0c;很多(如下图)&#xff0c;但是最常用的配置手段&#xff0c;任然是本地使用console口&#xff0c;远程使用telnet(或SSH)&#xff0c;本文以思科设备演示几种telnet的设置方法&a…

ifix的MySQL数据库_iFIX 技术文章:iFIX历史数据库

如下&#xff1a;定义所需采集数据的标签名(或者数据源)&#xff0c; 并定义采集组存放这些标签&#xff1b;定义每个采集组的参数(节点、采集速度、相位、控制标签、状态和标签)&#xff1b;采集速度越快&#xff0c;则数据越准确&#xff0c;数据容量越大。iFIX定义的有效数据…

python只能以程序方式执行死刑_Python程序设计基础_2020智慧树网课答案章节答案...

Python程序设计基础_2020智慧树网课答案章节答案答案&#xff1a;更多相关问题审判时怀孕的妇女&#xff0c;无论犯了多么严重的罪&#xff0c;最高可以判处()。A.死刑立即执行B.无期徒刑C.有期徒刑甲见他人贩卖毒品获得巨额暴利,遂起贩毒之意,但苦于无毒品来源,便制造了大量假…

WPF系列 自定控件

引言 WPF中微软提供了一些基本的控件&#xff0c;但是工作中这些基础的控件往往不能满足我们的需求&#xff0c;这个时候我们就需要根据实际的需求去开发自己的控件&#xff0c;但要注意不是所有功能不满足的情况都需要通过自定义控件来实现。实际上一旦用到自定义控件&#xf…

Paddle 使用预训练模型 实现快递单信息抽取

文章目录1. 导包2. 数据处理3. 辅助函数3.1 评估函数3.2 预测函数3.3 预测结果解码4. 训练填写快递单据可以直接把所有信息直接粘贴进客户端&#xff0c;客户端自动识别 省市、人名、电话等信息&#xff0c;分类填入&#xff0c;然后打印出来粘贴。无须人工填写&#xff0c;加快…

java oracle 分区查询_深入学习Oracle分区表及分区索引

深入学习Oracle分区表及分区索引关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言&#xff0c;基本上可以分成几类&#xff1a;•    Range(范围)分区•    Hash(哈希)分区•    List(列表)分区•    以及组合分区&a…

python3 可执行文件_将python3打包成为exe可执行文件(pyinstaller)

我们工作中可能会遇到&#xff0c;客户需要一个爬虫或者其他什么功能的python脚本。这个时候&#xff0c;如果我们直接把我们的python脚本发给客户&#xff0c;会有两个问题&#xff1a;1、客户的电脑或者服务器可能并没有安装python环境&#xff0c;这样就直接导致客户拿到pyt…

LeetCode 1935. 可以输入的最大单词数

文章目录1. 题目2. 解题1. 题目 键盘出现了一些故障&#xff0c;有些字母键无法正常工作。 而键盘上所有其他键都能够正常工作。 给你一个由若干单词组成的字符串 text &#xff0c;单词间由单个空格组成&#xff08;不含前导和尾随空格&#xff09;&#xff1b; 另有一个字符…

C# DateTime简单的定时器用法

DateTime是C#中的时间类&#xff0c;有公共索引器Now可以获取当前时间。 如果制作简单定时器的话&#xff0c;可以这样: 初始化&#xff1a;DateTime lasttimeDateTime.Now; TimeSpan timeintervalnew TimeSpan(1000); bool CheckTimer() { if(DateTime.Now.Substract(lasttime…

java 播放swf_我用java写了一个播放swf动画的类运行时报错了,代码和报错如下…...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼哪位高手帮小妹看看哈&#xff1b;谢谢啦&#xff0c;代码如下import java.awt.BorderLayout;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.SwingUtilities;import chrriis.common.UIUtils;import chr…

python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)

版权申明&#xff1a;本文为博主窗户(Colin Cai)原创&#xff0c;欢迎转帖。如要转贴&#xff0c;必须注明原文网址http://www.cnblogs.com/Colin-Cai/p/8013009.html作者&#xff1a;窗户QQ&#xff1a;6679072E-mail&#xff1a;6679072qq.com使用RSA公钥解密&#xff0c;用o…

立足现在,规划未来

Now Linux ShellPythonCREsed/awk LispSQE ISO9001/TS16949SPCSQL MySQLNoSQLLCDMore MBA转载于:https://www.cnblogs.com/omicron/p/4495644.html

LeetCode 1936. 新增的最少台阶数

文章目录1. 题目2. 解题1. 题目 给你一个 严格递增 的整数数组 rungs &#xff0c;用于表示梯子上每一台阶的 高度 。 当前你正站在高度为 0 的地板上&#xff0c;并打算爬到最后一个台阶。 另给你一个整数 dist 。 每次移动中&#xff0c;你可以到达下一个距离你当前位置&am…

mysql事务与jdbc事务_事务(mysql事务、jdbc事务)

一、MYSQL事务1、事务概念&#xff1a;事务是一个用户定义的数据库操作序列&#xff0c;这些操作要么全做要么全不做&#xff0c;是一个不可分割的工作单位。事务可以是一条sql语句&#xff0c;一组sqi语句或者整个程序。特性(ACDI)&#xff1a;(1)原子性&#xff1a;一个事务中…

access 如何使用dolby_Access/VBA/Excel-Access表及字段创建-03

Part 1&#xff1a;前面的话对Access数据库的大部分操作都可以通过SQL语言来实现SQL:Structure Query Language&#xff0c;结构化查询语言&#xff0c;语法简单&#xff0c;非常容易学SQL语言的执行可借助于ADO&#xff0c;ADO本身也支持对数据库的各种操作&#xff0c;但是涉…