如图所示,测试用例过了大部分,代码哪里有问题呢?
class Solution {
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
public:
int nearestExit(vector<vector<char>>& maze, vector<int>& entrance) {
int m=maze.size(),n=maze[0].size();
//标记数组
int vis[m][n];
memset(vis,0,sizeof(vis));
//创建队列用于BFS
queue<pair<int ,int>> q;
q.push({entrance[0],entrance[1]});
vis[entrance[0]][entrance[1]]=true;
//开始BFS遍历
int step=0;
while(q.size())
{
step++;
for(int i=0;i<q.size();i++)
{
auto [a,b]=q.front();
q.pop();
for(int j=0;j<4;j++)
{
int x=a+dx[j];
int y=b+dy[j];
if(x>=0&&x<m&&y>=0&&y<n&&!vis[x][y]&&maze[x][y]=='.')
{
//判断是否为出口
if(x==0||x==m-1||y==0||y==n-1) return step;
q.push({x,y});
vis[x][y]=true;
}
}
}
}
return -1;
}
};