力扣HOT100 - 994. 腐烂的橘子

解题思路:

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

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

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

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.hqwc.cn/news/650795.html

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

相关文章

2024年618有哪些数码家电值得入手?全网最省钱攻略指南

作为全年唯一设在夏季的大型电商狂欢节&#xff0c;618一直是很多人购置数码类、家电类的最好时间节点之一。但是问题来了&#xff0c;现在的数码家电行业“鱼龙混杂”&#xff0c;不仅越来越多新品牌涌入市场&#xff0c;而且各个大品牌为了抢占市场&#xff0c;旗下产品的品类…

新手Pytorch入门笔记-transforms.Compose()

我使用的图片是上图&#xff0c;直接下载即可 transforms.Compose 是PyTorch中的一个实用工具&#xff0c;用于创建一个包含多个数据变换操作的变换对象。这些变换操作通常用于数据预处理&#xff0c;例如图像数据的缩放、裁剪、旋转等。使用transforms.Compose 可以将多个数据…

用了十年以上的破旧电脑还能干啥?Ubuntu 24.04

用了十年之久的电脑卡不卡&#xff1f; 写博客&#xff0c;刷视频一点都不卡&#xff0c;敲敲代码也OK。 宏碁Aspire 4741G系列笔记本电脑是宏碁在2010年8月推出的产品&#xff0c;因此其生产日期可能大致在那个时间段或附近。但请注意&#xff0c;具体的生产日期可能会因生产…

Linux多进程(四) 守护进程

守护进程&#xff08;Daemon Process&#xff09;&#xff0c;也就是通常说的 Daemon 进程&#xff08;精灵进程&#xff09;&#xff0c;是 Linux 中的后台服务进程。它是一个生存期较长的进程&#xff0c;通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件…

【Android】 四大组件详解之广播接收器、内容提供器

目录 前言广播机制简介系统广播动态注册实现监听网络变化静态注册实现开机自启动 自定义广播发送标准广播发送有序广播 本地广播 内容提供器简介运行时权限访问其他程序中的数据ContentResolver的基本用法读取系统联系人 创建自己的内容提供器创建内容提供器的步骤 跨程序数据共…

尺取法知识点讲解

一、固定长度的情况&#xff1a; 最小和(sum) 输入N个数的数列&#xff0c;所有相邻的M个数的和共有N-M1个&#xff0c;求其中的最小值。 输入格式 第1行&#xff0c;2个整数N&#xff0c;M&#xff0c;范围在[3…100000]&#xff0c;N>M。 第2行&#xff0c;有N个正…

【算法刷题 | 贪心算法03】4.25(最大子数组和、买卖股票的最佳时机|| )

文章目录 4.最大子数组和4.1题目4.2解法一&#xff1a;暴力4.2.1暴力思路4.2.2代码实现 4.3解法二&#xff1a;贪心4.3.1贪心思路4.3.2代码实现 5.买卖股票的最佳时机||5.1题目5.2解法&#xff1a;贪心5.2.1贪心思路5.2.2代码实现 4.最大子数组和 4.1题目 给你一个整数数组 n…

【MATLAB】将多个图像输出到单个图形窗口上:使用 subplot 函数创建子图

引言 subplot是MATLAB中的一个函数&#xff0c;它用于在单个图形窗口中创建多个子图。这对于同时显示多个图形或图像非常有用。 语法详解 基本语法&#xff1a; subplot(m, n, p)参数详解&#xff1a; m 指定图形窗口应该分割成多少行n 指定图形窗口应该分割成多少列p 指定…

36.WEB渗透测试-信息收集-企业信息收集(3)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;35.WEB渗透测试-信息收集-企业信息收集&#xff08;2&#xff09; 重要信息收集&#xf…

好的猫咪主食冻干到底该咋选?品控稳定的主食冻干推荐

315中国之声报道的河北省邢台市南和区某宠粮代工厂的“行业潜规则”&#xff0c;给各位铲屎官拉响了警钟。配料表上写的鸡肉含量为52%&#xff0c;新鲜鸡小胸含量为20%&#xff0c;所谓的鲜鸡肉其实就是鸡肉粉。本来养宠物是为了让自己身心愉悦&#xff0c;但这样的行业乱象弄得…

Python-VBA函数之旅-len函数

目录 一、len函数的常见应用场景&#xff1a; 二、len函数使用注意事项&#xff1a; 三、如何用好len函数&#xff1f; 1、len函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、…