图论-腐烂的橘子

994.腐烂的橘子


在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1

输入:二维数组
输出:最短时间
思路:看过题解本题使用BFS,广度优先算法,首先遍历数组,找到所有的“2”和“1”,然后统计,将“2”存在队列中,队列中的元素是数组,存的是“2”对应坐标,设置变量记录“1”的数,将所有的“2”存入队列中然后当做广度优先遍历的第0层,然后弹出,并将所能“污染”到的“1”进行“污染”,然后每一个“1”变为“2”,“1”的数量减一,最后判断是否大于0,大于0则返回最短时间,小于0则返回-1。

class Solution {public int orangesRotting(int[][] grid) {//1的个数int num = 0;//2的坐标Queue<int[]> que = new LinkedList<>();//数组纬度int m = grid.length;int n = grid[0].length;//循环遍历数组for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(grid[i][j] == 2){que.add(new int[]{i , j});}else if(grid[i][j] == 1){num++;}}}//时间int time = 0;while(num > 0 && !que.isEmpty()){time++;//把2的坐标记录下来//遍历2int n1 = que.size();for(int i = 0; i < n1; i++){int[] pos = que.poll();int x = pos[0];int y = pos[1];//判断边界和1if(x + 1 < m && grid[x + 1][y] == 1){que.add(new int[]{x + 1, y});grid[x + 1][y] = 2;num--;}if(y + 1 < n && grid[x][y + 1] == 1){que.add(new int[]{x, y + 1});grid[x][y + 1] = 2;num--;}if(x - 1 >= 0 && grid[x - 1][y] == 1){que.add(new int[]{x - 1, y});grid[x - 1][y] = 2;num--;}if(y - 1 >= 0 && grid[x][y - 1] == 1){que.add(new int[]{x, y - 1});grid[x][y - 1] = 2;num--;}}}//还有1,返回-1if(num > 0){return -1;}return time;}
}

注意:此处int n1 = que.size(); for(int i = 0; i < n1; i++){...}不能写成for(int i = 0; i < que.size(); i++)

如果使用 for(int i = 0; i < que.size(); i++),队列大小在循环过程中可能会动态变化,导致逻辑错误。
如果使用 int n1 = que.size(); for(int i = 0; i < n1; i++),队列大小在循环开始前固定,循环次数不会受到动态变化的影响,逻辑更加稳定。

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

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

相关文章

TypeError: Cannot create property ‘xxx‘ on string ‘xxx‘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

嵌入式硬件设计SPI时需要注意什么?

嵌入式硬件设计SPI时需要注意什么? 1. 硬件设计注意事项 关键点注意事项1. 信号完整性- 缩短SCK、MOSI、MISO的走线长度,避免反射干扰。- 使用屏蔽线或差分信号(高速场景)。- 阻抗匹配(特别是高频信号,如50Ω端接)。2. 电源与地线- 电源去耦:每个SPI芯片的VCC附近放置0…

git-filter-repo 清除大文件教程

git filter-repo 是一个用于过滤和清理 Git 仓库历史的工具&#xff0c;它可以高效地批量修改提交历史中的文件内容、删除文件、重命名文件以及进行其他历史重构操作。相较于 git filter-branch&#xff0c;它通常更快且更易于使用。 以下是一个基本示例&#xff0c;说明如何使…

STM32之软件SPI

SPI传输更快&#xff0c;最大可达80MHz&#xff0c;而I2C最大只有3.4MHz。输入输出是分开的&#xff0c;可以同时输出输入。是同步全双工。仅支持一主多从。SS是从机选择线。每个从机一根。SPI无应答机制的设计。 注意&#xff1a;所有设备需要共地&#xff0c;时钟线主机输出&…

Git清理本地残留的、但已经在服务器上被删除的分支

要筛选出已经被服务器删除的本地分支&#xff0c;并在本地删除这些分支&#xff0c;可以按照以下步骤进行操作&#xff1a; 步骤 1: 获取远程分支信息&#xff0c;确保本地的远程分支信息是最新的&#xff1a; git fetch -p步骤 2: 列出本地分支和远程分支&#xff1a; git …

DeepSeek 掌舵创意方向+即梦 AI 绘制梦幻蓝图,引领创作潮流

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 前言 在当今数字化浪潮汹涌澎湃的时代&#xff0c;人工智能已然成为推动各领域变革与创新的核心驱…

elasticsearch商业产品

Elasticsearch商业产品介绍 在当今数字化时代&#xff0c;数据如同石油一样珍贵。而要从海量的数据中提取有价值的信息&#xff0c;则需要强大的工具。这就是Elasticsearch商业产品的用武之地。Elasticsearch是一款开源的搜索引擎&#xff0c;它能够快速地存储、搜索和分析大规…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

Deepin下创建WebStorm快捷方式

个人博客地址&#xff1a;Deepin下创建WebStorm快捷方式 | 一张假钞的真实世界 下载WebStorm并解压至安装目录&#xff0c;默认的只能通过命令行启动&#xff0c;每次都需要先打开终端&#xff0c;很不方便。解决方法是创建快捷方式&#xff0c;并驻留任务栏。这样点击任务栏上…

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…

从零开始用HTML、CSS和JavaScript制作贪吃蛇网页小游戏

〇、前言 贪吃蛇是一款经典的休闲游戏&#xff0c;在诺基亚手机时代风靡全球。 作为编程入门者&#xff0c;实现一个贪吃蛇游戏是学习Web前端技术的绝佳练习。 名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN…

LeetCode1328

非常抱歉&#xff0c;我理解错了你的要求&#xff01;现在我会严格按照你的要求重新组织内容&#xff0c;确保在代码段中不加入注释&#xff0c;并在代码逐行讲解中加入代码段。 LeetCode1328 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题…

STM32点亮LED灯

1.1 介绍&#xff1a; LED模块。它的控制方法非常简单&#xff0c;要想点亮LED&#xff0c;只要让它两端有一定的电压就可以&#xff1b;实验中&#xff0c;我们通过编程控制信号端S的高低电平&#xff0c;从而控制LED的亮灭。我们提供一个测试代码控制LED模块上实现闪烁的效果…

【华三】STP端口角色与状态深度解析

STP端口角色与状态深度解析&#xff1a;构建无环网络的基石 引言一、STP基础回顾二、端口角色详解1. 根端口&#xff08;Root Port&#xff09;2. 指定端口&#xff08;Designated Port&#xff09;3. 非指定端口&#xff08;阻塞端口&#xff09; 三、端口状态转换流程四、角色…

计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

稚晖君级硬核:智元公司开源机器人通信框架AimRT入驻GitCode平台

在科技的浪潮中&#xff0c;机器人技术正以前所未有的速度发展。它们不再只是科幻小说中的概念&#xff0c;而是逐渐融入到我们的日常生活中&#xff0c;从工厂的自动化生产线到家庭的智能助手&#xff0c;机器人的身影无处不在。然而&#xff0c;随着机器人应用的日益复杂&…

[项目]基于FreeRTOS的STM32四轴飞行器: 四.LED控制

基于FreeRTOS的STM32四轴飞行器: 四.LED控制 一.配置Com层二.编写驱动 一.配置Com层 先在Com_Config.h中定义灯位置的枚举类型&#xff1a; 之后定义Led的结构体&#xff1a; 定义飞行器状态&#xff1a; 在Com_Config.c中初始化四个灯&#xff1a; 在Com_Config.h外部声明…

Ubuntu20.04双系统安装及软件安装(一):系统安装

Ubuntu20.04双系统安装及软件安装&#xff08;一&#xff09;&#xff1a;系统安装 Ubuntu系统卸载Ubuntu20.04安装BIOS进入系统安装 许久没写博客了&#xff0c;今天开始重新回归了。首先记录我在双系统上重装Ubuntu20.04的安装过程记录以及个人见解。 Ubuntu系统卸载 参考双…

cursor+deepseek实现完整的俄罗斯方块小游戏

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>俄罗斯方块</title><style>body {margin: 0;display: flex;justify-content: center;align-items: center;height: 100vh;background: …

人工智能开发面经AI、大数据、算法

以下是一份AI算法开发岗位的面试面经&#xff0c;结合最新行业趋势和经典问题&#xff0c;涵盖技术解析与实战案例&#xff0c;供参考&#xff1a; 一、机器学习基础&#xff08;占比约30%&#xff09; 1. 过拟合与欠拟合的解决方案 问题&#xff1a;如何解决模型过拟合&…