美文网首页随笔
Leetcode 994. 腐烂的橘子

Leetcode 994. 腐烂的橘子

作者: zhipingChen | 来源:发表于2019-05-25 14:41 被阅读8次

题目描述

在给定的网格中,每个单元格可以有以下三个值之一:

  • 值 0 代表空单元格;
  • 值 1 代表新鲜橘子;
  • 值 2 代表腐烂的橘子。

每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。

返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

广度优先遍历

腐烂橘子的传播以一种类似广播扩散的形式进行。这里不妨以队列来模拟腐烂橘子的扩散过程,队列中存储新的被感染的橘子,则队列为空时表示扩散停止。此时若网格中仍有新鲜橘子,则表示这些橘子不可达,返回 -1;若全部橘子均为腐烂,则返回扩散次数(可能为 0,即初始情况即为全部腐烂)。

class Solution:
    def orangesRotting(self, grid: List[List[int]]) -> int:
        cnt,l,w=0,len(grid),len(grid[0]) 
        arr=[(i,j) for i in range(l) for j in range(w) if grid[i][j]==2]
        while arr:
            for t in range(len(arr)):
                i,j=arr.pop(0)
                for x,y in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:
                    if 0<=x<l and 0<=y<w and grid[x][y]==1:
                        arr.append((x,y))
                        grid[x][y]=2
            if arr:
                cnt+=1
        arr=[(i,j) for i in range(l) for j in range(w) if grid[i][j]==1]
        return -1 if arr else cnt

相关文章

  • LeetCode 994. 腐烂的橘子

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

  • Leetcode 994. 腐烂的橘子

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

  • 994.腐烂的橘子

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

  • 994.腐烂的橘子

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

  • queue:994.腐烂的橘子

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

  • 994. 腐烂的橘子(Python)

    难度:★★★☆☆类型:数组方法:宽度优先搜索,队列 题目 力扣链接请移步本题传送门[https://leetcod...

  • 994. 腐烂的橘子-广度优先搜索BFS

    题目:https://leetcode-cn.com/problems/rotting-oranges/ 我的方法...

  • leetcode---994腐烂橘子

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

  • LeetCode 第994题:腐烂的橘子

    1、前言 2、思路 本题的意思是,感染到没有新鲜橘子为止。本题为什么用 BFS 思路的原因是这样的,如果你从左上角...

  • 腐烂的橘子

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

网友评论

    本文标题:Leetcode 994. 腐烂的橘子

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