【重点】【BFS】542.01矩阵

题目

法1:经典BFS

下图中就展示了我们方法:

java 复制代码
class Solution {
    public int[][] updateMatrix(int[][] mat) {
        int m = mat.length, n = mat[0].length;
        int[][] dist = new int[m][n];
        boolean[][] used = new boolean[m][n];
        Queue<int[]> queue = new LinkedList<>();
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (mat[i][j] == 0) {
                    queue.offer(new int[]{i, j});
                    used[i][j] = true;
                }
            }
        }
        int[] xMove = new int[]{-1, 1, 0, 0};
        int[] yMove = new int[]{0, 0, -1, 1};
        while (!queue.isEmpty()) {
            int[] curLoc = queue.poll();
            int curX = curLoc[0], curY = curLoc[1];
            for (int i = 0; i < 4; ++i) {
                int xNew = curX + xMove[i];
                int yNew = curY + yMove[i];
                if (xNew >= 0 && xNew < m && yNew >= 0 && yNew < n && !used[xNew][yNew]) {
                    queue.offer(new int[]{xNew, yNew});
                    dist[xNew][yNew] = dist[curX][curY] + 1;
                    used[xNew][yNew] = true;
                }
            }
        }

        return dist;
    }
}
相关推荐
D_C_tyu19 小时前
HTML | 结合Canvas开发具有智能寻路功能的贪吃蛇小游戏实战详解
javascript·算法·游戏·html·bfs
_小草鱼_4 天前
【搜索与图论】BFS(广度优先搜索)
算法·图论·bfs·宽度优先
lcreek5 天前
LeetCode 1162.地图分析
算法·leetcode·bfs
落地加湿器6 天前
Acwing算法课图论与搜索笔记
c++·笔记·算法·图论·dfs·bfs·图搜索算法
I_LPL8 天前
hot100 图论专题
算法·图论·dfs·bfs·拓扑排序
像污秽一样9 天前
算法与设计与分析-习题4.2
算法·排序算法·深度优先·dfs·bfs
像素猎人11 天前
以数据结构之——树来体会深度优先搜索【dfs】和广度优先搜索【bfs】的妙用:学比特算法课的自用笔记
数据结构·c++·学习·dfs·bfs·深度优先搜索
样例过了就是过了14 天前
LeetCode热题100 腐烂的橘子
数据结构·c++·算法·leetcode·bfs
仟濹1 个月前
【算法打卡day10(2026-02-24 周二)复习算法:DFS BFS 并查集】
算法·深度优先·图论·dfs·bfs·广度优先·宽度优先
漂流瓶jz1 个月前
UVA-12569 树上的机器人规划(简单版) 题解答案代码 算法竞赛入门经典第二版
算法·图论·dfs·bfs·uva·算法竞赛入门经典第二版·11214