图论-腐烂的橘子

ops/2025/3/4 21:54:33/

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。```java
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的坐标记录下来//遍历2for(int i = 0; i < que.size(); 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;}
}

http://www.ppmy.cn/ops/163136.html

相关文章

RA-Eco-RA2L1-48PIN-V1.0开发板RTC时钟

前言 本文将详细介绍如何在e2studio开发环境中为RA2L1&#xff08;48引脚版本&#xff09;配置RTC&#xff08;Real-Time Clock&#xff0c;实时时钟&#xff09;模块&#xff0c;设置时钟日历&#xff0c;并通过1秒周期中断触发串口打印当前时间。这对于需要实时时间显示的应…

游戏引擎学习第128天

开始 然而&#xff0c;我们仍然有一些工作要做&#xff0c;渲染部分并没有完全完成。虽然现在已经能够运行游戏&#xff0c;而且帧率已经可以接受&#xff0c;但仍然有一些东西需要进一步完善。正在使用调试构建编译版本&#xff0c;虽然调试版本的性能不如优化版本&#xff0…

爬虫基础:一文掌握网页基础和爬虫原理

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、网页基础1.1 网页的基本概念1.2 请求与响应1.3 HTTP 协议1.4 HTTP 状态码1.5 动态网页与静态网页二、 网页的基本结构2.1 HTML(超文本标记语言)2.2 CSS(层叠样式表)2.3 JavaScript三. 爬虫的基本原理四、网页数…

k8s面试题总结(八)

1.K8s部署服务的时候&#xff0c;pod一直处于pending状态&#xff0c;无法部署&#xff0c;说明可能的原因 Node节点的资源不足&#xff0c;yaml文件资源限制中分配的内存&#xff0c;cpu资源太大&#xff0c;node宿主机资源没那么大&#xff0c;导致无法部署。部署pod的yaml文…

力扣 最长回文子串

双指针&#xff0c;多维动态规划。 题目 回文即顺着读跟倒着读都是一样的&#xff0c;然后又是一个找子串的问题&#xff0c;不难发现又是一道dp了。但是&#xff0c;这里维护的状态用到了双指针&#xff0c;找的分别是子串的首字母跟尾字母&#xff0c;因此也是个多维动态规划…

ArcGIS Pro实战技巧:灵活运用线条精准分割与裁切面要素

在地理信息系统&#xff08;GIS&#xff09;的应用中&#xff0c;我们经常需要对地图上的面要素进行精确的分割或裁切。 ArcGIS Pro作为一款强大的GIS软件&#xff0c;提供了多种工具来满足这一需求。 本文将详细介绍如何在ArcGIS Pro中使用线要素对面要素进行分割和裁切&…

docker关闭mysql端口映射的使用

需求 项目中的数据库为mysql&#xff0c;如果将端口映射到宿主机上&#xff0c;容易被工具扫描出&#xff0c;且随着国产化的进程推进&#xff0c;mysql将不被允许。为了提高安全性与满足项目需求&#xff0c;这里采用隐藏mysql端口方式&#xff0c;不映射宿主机端口&#xff…

jvm内存不够,怎么重新分配

目录 第一章、问题分析1.1&#xff09;报错提示1.2&#xff09;报错分析 第二章、解决方式2.1&#xff09;修改IDEA的JVM内存设置2.2&#xff09; 修改Spring Boot项目的JVM内存设置 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接…