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

LeetCode994腐烂的橘子

题目描述

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

解析

  对于每一个腐烂的橘子,每次都使其周围的橘子变成腐烂的橘子,就是同时又多个起点的BFS算法,有点类似洪泛这种。

public int orangesRotting(int[][] grid) {Queue<int[]> queue = new ArrayDeque<>();int freshOranges = 0;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] == 2) {queue.offer(new int[]{i, j});} else if (grid[i][j] == 1) {freshOranges++;}}}if (freshOranges == 0) return 0;int minutes = 0;int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};while (!queue.isEmpty()) {int currentLevelSize = queue.size();for (int i = 0; i < currentLevelSize; i++) {int[] cur = queue.poll();for (int[] direction : directions) {int newX = cur[0] + direction[0];int newY = cur[1] + direction[1];if (newX >= 0 && newX < grid.length && newY >= 0 && newY < grid[0].length && grid[newX][newY] == 1) {grid[newX][newY] = 2;  // Mark as rottenqueue.offer(new int[]{newX, newY});freshOranges--;}}}minutes++;  // Completed one minute}return freshOranges == 0 ? minutes - 1 : -1;  // Adjust minutes as the last minute may not count
}

在这里插入图片描述

相关文章:

  • 好的架构是进化来的,不是设计来的
  • Python考试复习--day2
  • 基于51单片机的智能灯光控制系统
  • Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】
  • 【Muduo】三大核心之EventLoop
  • Flink 数据源
  • 2024年短视频评论区批量爬取采集软件
  • 2024新数据库入门教程
  • JDK的Dockerfile
  • Shell脚本学习笔记(更新中...)
  • 安捷伦Agilent 8114A脉冲发生器的特点资料
  • C++: 二叉搜索树及实现
  • 【讲解下Web前端三大主流的框架】
  • 数据结构--树
  • io.net 是什么,DePIN(去中心化物理基础设施网络)
  • 《剑指offer》分解让复杂问题更简单
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular4 模板式表单用法以及验证
  • Consul Config 使用Git做版本控制的实现
  • Electron入门介绍
  • HTML中设置input等文本框为不可操作
  • Java 23种设计模式 之单例模式 7种实现方式
  • Javascript弹出层-初探
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • select2 取值 遍历 设置默认值
  • SpingCloudBus整合RabbitMQ
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue-cli3搭建项目
  • 看域名解析域名安全对SEO的影响
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 盘点那些不知名却常用的 Git 操作
  • 入口文件开始,分析Vue源码实现
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据可视化之 Sankey 桑基图的实现
  • 数组的操作
  • 一些关于Rust在2019年的思考
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 组复制官方翻译九、Group Replication Technical Details
  • ​linux启动进程的方式
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #APPINVENTOR学习记录
  • #define 用法
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)Linux——Linux常用指令
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (转) ns2/nam与nam实现相关的文件
  • (转)Scala的“=”符号简介