1926. 迷宫中离入口最近的出口
题目链接:1926. 迷宫中离入口最近的出口
代码如下:
class Solution
{
public:
int nearestExit(vector<vector<char>>& maze, vector<int>& entrance)
{
queue<tuple<int,int,int>> que;
//将入口加入队列并将入口修改为墙
que.emplace(entrance[0],entrance[1],0);
maze[entrance[0]][entrance[1]]='+';
while(!que.empty())
{
auto myTuple=que.front();
que.pop();
for(int i=0;i<4;i++)
{
int nextX=std::get<0>(myTuple)+dirX[i];
int nextY=std::get<1>(myTuple)+dirY[i];
if(nextX>=0&&nextX<maze.size()&&nextY>=0&&nextY<maze[0].size()&&maze[nextX][nextY]=='.')
{
//坐标越界
if(nextX==0||nextX==maze.size()-1||nextY==0||nextY==maze[0].size()-1)
{
return std::get<2>(myTuple)+1;
}
maze[nextX][nextY]='+0';
que.emplace(nextX,nextY,std::get<2>(myTuple)+1);
}
}
}
return -1;// 不存在到出口的路径,返回 -1
}
private:
int dirX[4]={1,0,-1,0};//上下左右
int dirY[4]={0,1,0,-1};//上下左右
};