力扣热题100_图论_994_腐烂的橘子

news2024/9/21 14:47:45

文章目录

  • 题目链接
  • 解题思路
  • 解题代码


题目链接

994. 腐烂的橘子

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

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。

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

示例 1:
在这里插入图片描述
输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4

示例 2:
输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。

示例 3:
输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

解题思路

广度优先搜索(BFS)

  • 首先分别将腐烂的橘子和新鲜的橘子保存在两个集合中;
  • 模拟广度优先搜索的过程,方法是判断在每个腐烂橘子的四个方向上是否有新鲜橘子,如果有就腐烂它。每腐烂一次时间加 1,并剔除新鲜集合里腐烂的橘子;
  • 当橘子全部腐烂时结束循环。

解题代码

class Solution:
    def orangesRotting(self, grid: List[List[int]]) -> int:
        row = len(grid)
        col = len(grid[0])
        rotten = {(i, j) for i in range(row) for j in range(col) if grid[i][j] == 2} # 腐烂集合
        fresh = {(i, j) for i in range(row) for j in range(col) if grid[i][j] == 1}  # 新鲜集合
        time = 0
        while fresh:
            if not rotten: return -1
            rotten = {(i + di, j + dj) for i, j in rotten for di, dj in [(0, 1), (0, -1), (1, 0), (-1, 0)] if (i + di, j + dj) in fresh} # 即将腐烂的如果在新鲜的集合中,就将它腐烂
            fresh -= rotten # 剔除腐烂的
            time += 1
        return time

参考资料:力扣热题100对应的题解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化实用干货分享

在当今的数字化时代,数据已成为企业决策的重要基石。然而,面对海量的数据,如何高效地理解、分析和应用这些数据,成为企业面临的一大挑战。数据可视化作为一种将数据转化为图形或图表的技术,为企业提供了强有力的支持。…

第八季完美童模全球人气总冠军【杜姗珊】至高加冕 见证星芒风采!

7月20-23日,2024第八季完美童模全球总决赛在青岛圆满落幕,在盛大的颁奖典礼上, 全球观众网友通过现场参与和网络直播的方式,共同见证了新一代“模”王诞生!在众多优秀的小超模中,来自上海的女孩杜姗珊从本次…

SRGAN:使用生成对抗网络对图像进行超分辨率重构

SRGAN:使用生成对抗网络对图像进行超分辨率重构 前言相关介绍SRGAN 的工作原理核心思想主要组件训练目标 优点缺点总结 实验环境项目地址LinuxWindows 项目结构具体用法准备数据集进行训练进行测试测试基准数据集测试单张图像测试单个视频 参考文献 前言 由于本人水…

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

20240814使用串口控制MC-105Q的机芯确认变焦

20240814使用串口控制MC-105Q的机芯确认变焦 2024/8/14 20:44 缘起:使用的是LVDS OUT的MC-105Q的机芯,最近需要查看光学/电子变焦。 打开电子变焦:81 01 04 06 02 ff 放大:81 01 04 07 02 FF 缩小:81 01 04 07 03 FF 串…

想要在数据治理领域脱颖而出?了解CDGA认证的重要性

CDGA认证是专注于数据治理领域的专业资格证明。 CDGA(即认证数据治理助理)是数据管理专家认证的一部分,旨在验证和展示个人在数据治理方面的专长和技巧。 下面是关于CDGA认证的详细说明: 1. CDGA认证的组织背景:DAM…

Vue.js-分析

目录 Vue.js基本概念和特性Vue.js生态系统Vue.js版本和更新Vue.js学习Vue.js进阶问题Vue.js中虚拟DOM的工作原理虚拟DOM的创建差异算法应用更新 Vue.js的组件化编程模型优势Vue 3相比Vue 2改进之处 Vue.js Vue.js(通常简称为 Vue)是一个开源的前端JavaS…

Python使用configparser管理配置文件

前言 在 Python 项目开发中,配置文件通常用于存储配置信息,例如数据库连接参数、日志设置、应用程序行为等。这些信息可以与代码分离,使得应用程序更易于维护和管理。Python 的标准库中提供了一个非常有用的模块——configparser&#xff0c…

鸿蒙AI功能开发【卡证识别控件】场景视觉化服务

卡证识别控件 介绍 本示例展示了使用视觉类AI能力中的卡证识别能力。 本示例模拟了在应用里,跳转卡证识别控件,获取到验证结果并展示出来。 需要使用hiai引擎框架卡证识别验证接口kit.VisionKit.d.ts。 效果预览 使用说明: 在手机的主屏…

sp eric靶机渗透测试

一、靶机下载地址 https://www.vulnhub.com/entry/sp-eric,274/ 二、信息收集 1、主机发现 # 使用命令 nmap 192.168.145.0/24 -sn | grep -B 2 "00:0C:29:FD:57:BE" 2、端口扫描 # 使用命令 nmap 192.168.145.211 -p- -sV 3、指纹识别 # 使用命令 whatweb 192…

Cesium天空盒子(Skybox)制作(js代码)和显示

介绍 在Cesium中,星空背景是通过天空盒子方式(6张图片)来显示的,原生的图片分辨率太低,本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个),格式为jpg,总共的恒星数目约为…

【案例45】报表计算卡死问题排查

问题现象 月结期间报表计算没有反映,报表计算不出结果。情况十分着急。 问题分析 查看数据库发现,数据库有锁。相关锁源头的blocking_session为1144。 查看1144的执行机器名为nctest,非NC生产环境所在机器 由程序触发,很有可能在…

基于开源MaxKB构建大语言模型的本地知识库系统

基于开源MaxKB构建大语言模型的本地知识库系统 什么是MaxKB MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统。MaxKB的产品命名内涵为“Max Knowledge Base”,为用户提供强大的学习能力和问答响应速度,致力…

Coggle数据科学 | 行业落地分享:大模型 RAG 汽车应用实践

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:行业落地分享:大模型 RAG 汽车应用实践 在人工智能的浪潮下,大模型技术正以其强大的数据处理能力和深度学习能力&#xff…

【MySQL进阶】事务、存储引擎、索引

一、事务 1.概念 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向 系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 例子:转账,要求扣钱和进账…

PyTorch--卷积神经网络(CNN)模型实现手写数字识别

文章目录 前言完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 加载MNIST数据集5. 创建数据加载器6. 定义卷积神经网络模型7. 实例化模型并移动到设备8. 定义损失函数和优化器9. 训练模型10. 测试模型11. 保存模型 常用函数解析小改进数据集部分可视化训练过程可视…

阿里V2缺口图-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处理&…

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task1:智能编程助手(持续更新)

在一个数据驱动的世界里,人工智能的未来应由每一个愿意学习和探索的人共同塑造和掌握。希望这里是你实现AI梦想的起点。 大模型小白入门:https://linklearner.com/activity/14/11/25 大模型开发工程师能力测试:https://linklearner.com/activ…

20240810在荣品RK3588S-AHD开发板的预置Android13下挂载exFAT的256GB的TF卡

df -h mount fdisk无效 20240810在荣品RK3588S-AHD开发板的预置Android13下挂载exFAT的256GB的TF卡 2024/8/10 21:19 缘起:当时比较便宜96.9¥/想看看256GB的TF卡的高速卡的效果,就在京东入手了3张三星的高速TF卡。最近在弄RK3588S&#xff0c…

部署和体验llama3.1:8B中文微调版本

前言 llama-3-1 meta于2024-07-23发布 https://ai.meta.com/blog/meta-llama-3-1/ 文档 https://llama.meta.com/docs/llama-everywhere/running-meta-llama-on-linux/ git https://github.com/meta-llama/llama3 Cloudflare提供了免费访问的入口 https://linux.do/t/to…