力扣HOT100 - 994. 腐烂的橘子

server/2024/9/24 13:13:22/

解题思路:

因为要记录轮数(分钟数),所以不能一口气遍历到底,所以不能用深搜(bfs),而要用广搜(bfs,层序遍历)。

先记录下新鲜橘子数,并用一个队列记录腐烂橘子的坐标。

每轮遍历腐烂橘子(使用过的腐烂橘子需要出队),并向四周影响,使得四周的新鲜橘子变为腐烂橘子(新鲜橘子数减1,队列中加入新的腐烂橘子的坐标)。

java">class Solution {public int orangesRotting(int[][] grid) {Queue<int[]> queue = new LinkedList<>();int fresh = 0;for (int r = 0; r < grid.length; r++) {for (int c = 0; c < grid[0].length; c++) {if (grid[r][c] == 1) fresh++;else if (grid[r][c] == 2) queue.add(new int[] { r, c });}}int minutes = 0;while (fresh > 0 && !queue.isEmpty()) {minutes++;int n = queue.size();// for循环中queue大小不断变化,需要提前暂存for (int i = 0; i < n; i++) {int[] orange = queue.poll();int r = orange[0];int c = orange[1];if (r - 1 >= 0 && grid[r - 1][c] == 1) {grid[r - 1][c] = 2;fresh--;queue.add(new int[] { r - 1, c });}if (r + 1 < grid.length && grid[r + 1][c] == 1) {grid[r + 1][c] = 2;fresh--;queue.add(new int[] { r + 1, c });}if (c - 1 >= 0 && grid[r][c - 1] == 1) {grid[r][c - 1] = 2;fresh--;queue.add(new int[] { r, c - 1 });}if (c + 1 < grid[0].length && grid[r][c + 1] == 1) {grid[r][c + 1] = 2;fresh--;queue.add(new int[] { r, c + 1 });}}}if (fresh > 0) return -1;else return minutes;}
}


http://www.ppmy.cn/server/17966.html

相关文章

2024年深圳杯东三省数学建模联赛A题B题C题D题超详细解题思路与论文解析

《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓ https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 选题建议 ok&#xff0c;我也是第一时间拿到了这个深圳杯的题目&#xff0c;下面是2024深圳杯和东三省数学建模的各题难度分析和选题建议&am…

IntelliJ IDEA2020下使用Maven构建Scala 项目

1.创建maven文件 2.进入pom.xml导入依赖 <!--添加spark的依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.1</version></dependency><!--添加scala依…

【前端】4. CSS综合案例

1. 模拟新闻界面 <!-- 1.模拟实现新闻界面 --><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

为什么近年来机器学习这么火!!

机器学习&#xff08;Machine Learning&#xff09;是一种人工智能&#xff08;AI&#xff09;的分支&#xff0c;它让计算机能够通过数据学习和改进&#xff0c;而无需明确的编程。这意味着机器学习系统可以从经验中学习&#xff0c;逐步提高其性能。它基于统计学和数学算法&a…

【MATLAB源码-第199期】基于MATLAB的深度学习(CNN)数字、模拟调制识别仿真,输出识别率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于深度学习的调制识别系统利用复杂的数学模型和算法来识别和分类从不同来源接收到的无线信号的调制类型。这种技术的应用广泛&#xff0c;特别是在无线通信、电子战、频谱监测和认知无线电等领域中具有重要价值。调制识别系…

springboot springcloud gateway 中的 undertow 禁止接收trace请求(修复漏洞)

1.定义两个类&#xff1a; CustomHttpHandler.java import io.undertow.server.HttpHandler; import io.undertow.server.HttpServerExchange; import io.undertow.util.StatusCodes;public class CustomHttpHandler implements HttpHandler {private final HttpHandler next;…

【Docker】Docker 中不能使用 nvidia-smi

目录 1. 问题 2. 解决方法 1. 问题 在 docker 中执行 nvidia-smi 后报错&#xff1a; Failed to initialize NVML: Unknown Error这个错误表示不能成功初始化NVML(Nvidia Management Library)库来管理和监测Nvidia GPU。可能的原因和解决方法如下: 检查是否正确安装并加载了…

python爬虫学习------scrapy第二部分(第三十天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…