当前位置: 首页 > article >正文

2025年- H57-Lc165--994.腐烂的橘子(图论,广搜)--Java版

1.题目描述

在这里插入图片描述

2.思路

在这里插入图片描述

3.代码实现

import java.util.LinkedList;
import java.util.Queue;public class H994 {public int orangesRotting(int[][] grid) {//1.获取行数int rows=grid.length;int cols=grid[0].length;//2.创建队列用于bfsQueue<int[]> que=new LinkedList<>();//3.记录新鲜橘子的数量int fresh=0;//4.遍历整个网络,初始化队列for(int i=0;i<rows;i++){for(int j=0;j<cols;j++){//如果是腐烂的橘子,加入队列中作为bfs的起点if(grid[i][j]==2){//把腐烂橘子当前坐标加入到队列中que.offer(new int[]{i,j});}//如果是新鲜橘子,统计数量if(grid[i][j]==1){fresh++;}}}//如果没有新鲜的橘子,直接返回0分钟if(fresh==0) return 0;//定义方向数组,用于上下左右int[][] dirs={{1,0},{0,1},{0,-1},{-1,0}};int minutes=0;//记录分钟数//bfs开始,因为que存储了腐烂的橘子的坐标while(!que.isEmpty()){int size=que.size();//这一分钟是否有橘子感染boolean rotted=false;for(int i=0;i<size;i++){int[] pos=que.poll();//删除队首元素,并返回队首元素的值int x=pos[0];int y=pos[1];//遍历腐烂橘子的四个方向//dirs是二维数组,也就是一维数组dir[]的一维数组for(int[] dir:dirs){int nextx=x+dir[0];int nexty=y+dir[1];//如果在网格内且是新鲜橘子,将它变成腐烂橘子,并把新鲜橘子数-1if(nextx>=0&&nextx<rows&&nexty>=0&&nexty<cols&&grid[nextx][nexty]==1){//变成腐烂橘子grid[nextx][nexty]=2;//新鲜橘子数量减少fresh--;//加入下一轮处理que.offer(new int[]{nextx,nexty});rotted=true;//防止腐烂的橘子重复计数}}}if(rotted==true){minutes++;}}if(fresh==0){return minutes;}else {return -1;}}public static void main(String[] args){int[][] grid={{2,1,1},{1,1,0},{0,1,1}};H994 test=new H994();int result=test.orangesRotting(grid);System.out.print(result);}}
http://www.lryc.cn/news/2396257.html

相关文章:

  • 2024 CKA模拟系统制作 | Step-By-Step | 16、题目搭建-sidecar 代理容器日志
  • (9)-Fiddler抓包-Fiddler如何设置捕获Https会话
  • Vue-Router 基础使用
  • 【案例分享】蓝牙红外线影音遥控键盘:瑞昱RTL8752CJF
  • 利用SQL批量修改Nacos配置
  • 网络协议的原理及应用层
  • Express教程【003】:Express获取查询参数
  • Android开发常用Kotlin高级语法
  • 输入ifconfig,发现ens33不见了,无法连接至虚拟机
  • Android Stdio 编译 文件生成,以及Gradle
  • 前端面试准备-4
  • AI赋能金融风控:基于机器学习的智能欺诈检测系统实战教程
  • Java虚拟机内存区域划分
  • 如何下载python的第三方类库
  • Redis击穿,穿透和雪崩详解以及解决方案
  • 网络渗透基础:信息收集
  • [SAP] 如何查询当前屏幕的Tcode?
  • ZigBee 协议:开启物联网低功耗通信新时代
  • JavaScript 模块系统:CJS/AMD/UMD/ESM
  • STM32F407寄存器操作(ADC非连续扫描模式)
  • 生产系统中TongWeb故障应急处理办法
  • PHP学习笔记(十一)
  • PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
  • 直线模组在手术机器人中有哪些技术挑战?
  • RK3568DAYU开发板-平台驱动开发--UART
  • ubuntu 安装 Redis 5.0.8 的完整步骤
  • 制造企业搭建AI智能生产线怎么部署?
  • 深度学习驱动的超高清图修复技术——综述
  • unix/linux source 命令,其内部结构机制
  • 【LLM】FastAPI入门教程