leetcode994.腐烂的橘子

思路源自

【力扣hot100】【LeetCode 994】腐烂的橘子|多源BFS

这里图中的腐烂的的橘子是同时对周围进行腐化,所以采用多源bfs就能解决

多源bfs与单源bfs的区别就在于队列取出时一轮是取出队列当中的全部元素

java 复制代码
class Solution {
    public int orangesRotting(int[][] grid) {
        int[][] dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//记录四个方向
        int result=0;//记录需要的分钟数
        int fresh=0;//记录新鲜橘子的数目
        Queue<int[]> queue = new ArrayDeque<>();//队列存储腐烂橘子
        int m = grid.length, n = grid[0].length;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if(grid[i][j]==1)
                    fresh++;
                else if(grid[i][j]==2)
                    queue.add(new int[]{i, j});
            }
        }
        while (!queue.isEmpty()) {
            int len = queue.size();
            while (len-- != 0) {
                int[] coordinate = queue.remove();
                //腐化四个方向上的新鲜橘子
                for (int[] dir : dirs) {
                    int x = coordinate[0] + dir[0];
                    int y = coordinate[1] + dir[1];
                    if(x<0||y<0||x>=m||y>=n||grid[x][y]!=1)
                        continue;
                    queue.add(new int[]{x, y});
                    grid[x][y]=2;
                    fresh--;
                }
            }
            if(!queue.isEmpty())//下一轮还有
                result++;
        }
        if(fresh>0)
            return -1;
        else
            return result;
    }
}
相关推荐
毕设源码-邱学长6 分钟前
【开题答辩全过程】以 智能商品数据分析系统为例,包含答辩的问题和答案
java·eclipse
君万6 分钟前
【LeetCode每日一题】94. 二叉树的中序遍历 104. 二叉树的最大深度
算法·leetcode·golang
Imxyk8 分钟前
力扣:2322. 从树中删除边的最小分数
数据结构·算法·leetcode
农场主John9 分钟前
(双指针)LeetCode 209 长度最小的子数组
数据结构·算法·leetcode
程序员Xu10 分钟前
【LeetCode热题100道笔记】前 K 个高频元素
笔记·算法·leetcode
Asmalin11 分钟前
【代码随想录day 23】 力扣 93.复原IP地址
算法·leetcode
Kira Skyler16 分钟前
抓虫:sw架构防火墙服务启动失败 Unable to initialize Netlink socket: 不支持的协议
java·linux
AMiner:AI科研助手2 小时前
警惕!你和ChatGPT的对话,可能正在制造分布式妄想
人工智能·分布式·算法·chatgpt·deepseek
张较瘦_3 小时前
[论文阅读] 软件工程 | 告别“线程安全玄学”:基于JMM的Java类静态分析,CodeQL3分钟扫遍GitHub千仓错误
java·论文阅读·安全
A尘埃5 小时前
智慧零售全渠道业务中台系统
java·零售