leetcode 994.腐烂的橘子
2024-09-02 20:09:14
题目:
在给定的网格中,每个单元格可以有以下三个值之一:
- 值
0
代表空单元格; - 值
1
代表新鲜橘子; - 值
2
代表腐烂的橘子。
每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。
返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1
。
分析:
最近在看广度优先搜素的题目,这个是比较简单基础的题了。
腐烂的橘子会把靠近他的新鲜的橘子腐蚀,那么就是只要从所有坏的橘子的地方一层一层往外遍历就可以了。
代码:
//5ms 97%
class Solution {
public int orangesRotting(int[][] grid) {
Queue<int[]> q=new LinkedList<>();
int h=grid.length,w=grid[0].length,time=0;
for(int n=0;n<h;++n)
for(int m=0;m<w;++m)
if(grid[n][m]==2) {
int[] po= {0,n,m};
q.add(po);
}
while(!q.isEmpty()) {
int[] g=q.poll();
time=time>g[0]?time:g[0];
if(g[1]+1<h&&grid[g[1]+1][g[2]]==1) {
grid[g[1]+1][g[2]]=2;
int[] po= {g[0]+1,g[1]+1,g[2]};
q.add(po);
}
if(g[1]-1>=0&&grid[g[1]-1][g[2]]==1) {
grid[g[1]-1][g[2]]=2;
int[] po= {g[0]+1,g[1]-1,g[2]};
q.add(po);
}
if(g[2]-1>=0&&grid[g[1]][g[2]-1]==1) {
grid[g[1]][g[2]-1]=2;
int[] po= {g[0]+1,g[1],g[2]-1};
q.add(po);
}
if(g[2]+1<w&&grid[g[1]][g[2]+1]==1) {
grid[g[1]][g[2]+1]=2;
int[] po= {g[0]+1,g[1],g[2]+1};
q.add(po);
}
}
for(int n=0;n<h;++n)
for(int m=0;m<w;++m)
if(grid[n][m]==1)
return -1;
return time;
}
}
最新文章
- Kafka的安装和部署及测试
- android布局学习-使用FrameLayout和LinearLayout制作QQ空间底部导航栏
- Web前端知识技能大汇总
- Caffe学习系列(16):caffemodel可视化
- Unity3d 适配机型
- Oracle 物理DG切换
- oracle 监控执行的sql语句
- 驱动04.平台总线驱动模型——点亮LED灯
- 过滤字符串html标签方法
- JFrame图形界面 ----绝对布局和按钮
- 【mybatis】-- springboot整合mybatis
- Google Analytics电子商务篇(Universal版)
- RE validator
- 传输层两大协议:TCP和UDP
- ncnn编译安装-20190415
- Abstract Factory 抽象工厂
- Qt如何获得窗口的几何信息(Window Geometry)
- Swiper正方体,左右翻转轮播图
- 利用aop完成功能权限验证遇到的问题
- CSS3不遥远,几个特性你要知道
热门文章
- 【测试】性能测试及性能测试工具Loadrunner
- 国产超低功耗蓝牙5.0 PHY6202替换NRF51822
- 小程序地图开发周边信息POI展示为列表
- 《新标准C++程序设计》3.9-3.10(C++学习笔记11)
- HDU 4921 Map DFS+状态压缩+乘法计数
- Node.js 文件系统模块
- SpringMVC:提交日期类型报400错误解决方法
- HDU - 1114 Piggy-Bank(完全背包讲解)
- 大数据高可用集群环境安装与配置(05)——安装zookeeper集群
- errors exist in required project(s) xxx proceed with launch?