栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1926. 迷宫中离入口最近的出口【广度优先搜索】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1926. 迷宫中离入口最近的出口【广度优先搜索】

1926. 迷宫中离入口最近的出口

class Solution {  //java  广度优先搜索
    public int nearestExit(char[][] maze, int[] entrance) {
        int rows = maze.length - 1;
        int cols = maze[0].length - 1;
        int[][] directions = new int[][] { {0, 1}, {0, -1}, {1, 0}, {-1, 0} };
        Queue que = new ArrayDeque<>();
        que.offer(new int[] { entrance[0], entrance[1], 0 });  //加入队列,不是 xy坐标系的xy,是行列
        maze[entrance[0]][entrance[1]] = '+';  //修改为墙
        while (!que.isEmpty()) {
            int[] cur = que.poll();  // 取出数组,并删除!
            int row = cur[0]; 
            int col = cur[1];
            int step = cur[2];
            for (int i = 0; i < 4; ++i) {
                int nextRow = row + directions[i][0];  //走四个方向
                int nextCol = col + directions[i][1];                  //判断四个方向哪个能进入
                if (nextRow >= 0 && nextRow <= rows && nextCol >= 0 && nextCol <= cols && maze[nextRow][nextCol] == '.') { 
                    if (nextRow == 0 || nextRow == rows || nextCol ==0 || nextCol == cols) {  //到出口了
                        return step + 1;
                    } 
                    maze[nextRow][nextCol] = '+';
                    que.add(new int[] {nextRow, nextCol, step + 1});  // 最短路径的步数
                }
            }
        }
        return -1;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003404.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号