力扣热题52

994. 腐烂的橘子 - 力扣(LeetCode)https://leetcode.cn/problems/rotting-oranges/submissions/628761183/?envType=study-plan-v2&envId=top-100-liked广度遍历

利用队列先记录所有腐烂的橘子的位置和当前的时间,然后从队列中取出橘子位置和时间,把四周的橘子也腐烂并加入队列,直到队列没元素,最后循环遍历一下差错判断一下并输出时间

复制代码
#python
class Solution:
    def orangesRotting(self, grid: List[List[int]]) -> int:
        h,l=len(grid),len(grid[0])
        q=collections.deque()
        for i,row in enumerate(grid):
            for j,k in enumerate(row):
                if k==2:
                    q.append((i,j,0))
        
        def ab(i,j):
            for a,b in ((i-1,j),(i+1,j),(i,j-1),(i,j+1)):
                if 0<=a<h and 0<=b<l:
                    yield a,b
        t=0
        while q:
            i,j,t=q.popleft()
            for a,b in ab(i,j):
                if grid[a][b]==1:
                    grid[a][b]=2
                    q.append((a,b,t+1))
        if any(1 in i for i in grid):
            return -1
        return t
相关推荐
共享家95273 小时前
搭建 AI 聊天机器人:”我的人生我做主“
前端·javascript·css·python·pycharm·html·状态模式
疯狂的喵3 小时前
C++编译期多态实现
开发语言·c++·算法
2301_765703143 小时前
C++中的协程编程
开发语言·c++·算法
m0_748708053 小时前
实时数据压缩库
开发语言·c++·算法
Hgfdsaqwr4 小时前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
lly2024064 小时前
jQuery Mobile 表格
开发语言
一晌小贪欢4 小时前
Python 测试利器:使用 pytest 高效编写和管理单元测试
python·单元测试·pytest·python3·python测试
小文数模4 小时前
2026年美赛数学建模C题完整参考论文(含模型和代码)
python·数学建模·matlab
惊讶的猫4 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
Halo_tjn4 小时前
基于封装的专项 知识点
java·前端·python·算法