一、1926.迷宫中离入口最近的出口
题目链接:1926.迷宫中离入口最近的出口
题目描述:

题目解析:
- 给我们一个字符数组,+ 表示墙,. 表示路。
- 求给我们的起始坐标,上下左右走到边界最短的距离。
- 没路出去返回 -1,刚开始的起点不算距离。
解题思路:
- 使用层序遍历,从给我们的起点开始。
- 每一次都将队列中的元素全部取出,相当于进了一步。
- 直到没路可走,或者走到边界。
- 使用一个相同大小的标记数组,将走过的路和墙标记。标记过的下标不入队。
// 时间复杂度:O(M*N) 空间复杂度:O(M*N)
class Solution {
int[] dx = {1, -1, 0, 0};
int[] dy = {0, 0, 1, -1};
boolean[][] flag;
int m, n;
public int nearestExit(char[][] maze, int[] entrance) {
m = maze.length;
n = maze[0].length;
flag = new boolean[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (maze[i][j] == ) {
flag[i][j] = ;
}
}
}
Queue<[]> queue = <>();
queue.add( []{entrance[], entrance[]});
flag[entrance[]][entrance[]] = ;
;
(!queue.isEmpty()) {
length++;
queue.size();
( ; i < size; i++) {
[] arr = queue.poll();
( ; j < ; j++) {
dx[j] + arr[];
dy[j] + arr[];
(x >= && x < m && y >= && y < n && maze[x][y] == && !flag[x][y]) {
(x == || x == m - || y == || y == n - ) {
length;
}
queue.add( []{x, y});
flag[x][y] = ;
}
}
}
}
-;
}
}





