腐烂的橘子

作者: 何以解君愁 | 来源:发表于2025-11-25 13:52 被阅读0次

腐烂的橘子

class Solution {
    public int orangesRotting(int[][] grid) {
        if (grid.length == 0) {
            return 0;
        }
        int m = grid.length;
        int n = grid[0].length;
        
        int freshCount = 0;
        Deque<Integer> queue = new ArrayDeque<>();
        //统计新鲜橘子数量,将腐烂橘子加入队列
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 1) {
                    freshCount++;
                } else if (grid[i][j] == 2) {
                    queue.offer(i * n + j);
                }
            }
        }
        //全是新鲜的,直接返回
        if (freshCount == 0) return 0;
        //统计腐烂时间
        int minutes = 0;
        // BFS遍历
        while (!queue.isEmpty() && freshCount > 0) {
            minutes++;
            //每次都把那一分钟涉及的橘子处理了
            int size = queue.size();
            for (int k = 0; k < size; k++) {
                int index = queue.poll();
                int x = index / n;
                int y = index % n;
                // 上方向
                if (x - 1 >= 0 && grid[x - 1][y] == 1) {
                    grid[x - 1][y] = 2;
                    freshCount--;
                    queue.offer((x - 1) * n + y);
                }
                // 下方向
                if (x + 1 < m && grid[x + 1][y] == 1) {
                    grid[x + 1][y] = 2;
                    freshCount--;
                    queue.offer((x + 1) * n + y);
                }
                // 左方向
                if (y - 1 >= 0 && grid[x][y - 1] == 1) {
                    grid[x][y - 1] = 2;
                    freshCount--;
                    queue.offer(x * n + (y - 1));
                }
                // 右方向
                if (y + 1 < n && grid[x][y + 1] == 1) {
                    grid[x][y + 1] = 2;
                    freshCount--;
                    queue.offer(x * n + (y + 1));
                }
            }
        }
        //对比是否还存在新鲜橘子
        return freshCount == 0 ? minutes : -1;
    }
}

相关文章

  • 腐烂的橘子

    题目: 题目的理解: 分几个小步骤思考: 1. 网格中是否还有正常的橘子。 2. 网格中坏橘子的位置。 3. 怀橘...

  • 正在慢慢腐烂的橘子

    把一个稍腐烂的橘子包上华丽的包装 放在冰箱里 你看不见它还在慢慢腐烂的身体 却暗自欣赏它上了包装的外边

  • 994.腐烂的橘子

    原题 https://leetcode-cn.com/problems/rotting-oranges/ 解题思路...

  • 994-腐烂的橘子

    腐烂的橘子 题目 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值...

  • 994.腐烂的橘子

    由题目我们可以知道每分钟每个腐烂的橘子都会使上下左右相邻的新鲜橘子腐烂,这其实是一个模拟广度优先搜索的过程。所谓广...

  • 夜晚4:27

    腐烂橘子的味道,闻起来是否让人心安。

  • 腐烂

    一个好好的橘子一夜之间腐烂了, 为什么?好奇怪?你能告诉我吗? 与其被人吃进肚子, 我宁愿骄傲地腐烂; 橘子一旦离...

  • queue:994.腐烂的橘子

    考点:队列 动态的遍历queue 遍历queue的同时会追加元素 广度优先搜索算法

  • LeetCode 994. 腐烂的橘子

    在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂...

  • 一只腐烂的橘子

    一只只橘子静静散落在木桌上 黄色的果皮,橙色的瓤瓣 你们本是同一片橘林的未来 经历共同的风雨、季节 命运将你们带来...

网友评论

    本文标题:腐烂的橘子

    本文链接:https://www.haomeiwen.com/subject/eggrtstx.html