leetcode 994.腐烂的橘子
题目:
在给定的网格中,每个单元格可以有以下三个值之一:
- 值
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;
}
}
leetcode 994.腐烂的橘子的更多相关文章
- Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges)
Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...
- Leetcode春季打卡第四天:994. 腐烂的橘子
Leetcode春季打卡第四天:994. 腐烂的橘子 Leetcode春季打卡第四天:994. 腐烂的橘子 思路 思路是采用广度优先搜索,一层一层遍历. 首先先扫描矩阵,将坏橘子放进队列,记录正常橘子 ...
- [LeetCode] 994. Rotting Oranges 腐烂的橘子
题目: 思路: 每个腐烂的橘子都能将自己上下左右的新鲜橘子传染,像极了现在的肺炎... 如果格子中只有一个腐烂的橘子,那么这便是一个典型的层次遍历,第一个传染多个,称为第二层,第二层传染第三层 但这里 ...
- [Swift]LeetCode994. 腐烂的橘子 | Rotting Oranges
In a given grid, each cell can have one of three values: the value 0 representing an empty cell; the ...
- [leetcode] 994. Rotting Oranges
题目 You are given an m x n grid where each cell can have one of three values: 0 representing an empty ...
- Swift LeetCode 目录 | Catalog
请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift 说明:题目中含有$符号则为付费题目. 如 ...
- 2019年9月Leetcode每日训练日志
2019-09-16 #1171 从链表中删去总和值为零的连续节点 #1170 比较字符串最小字母出现频次 #1169 查询无效交易 #226 翻转二叉树 2019-09-15 #1190 反转每对括 ...
- 【LeetCode】2020-03 每日一题
121. 买卖股票的最佳时机(简单) [分类]:模拟.思维 [题解]:可以用O(n)的复杂度完成,只需要在遍历的时候记录到当前位置为止买入股票的最小价格minn,再维护一个当前卖出股票价(a-minn ...
- Rotting Oranges - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Rotting Oranges - LeetCode 注意点 解法 解法一:bfs.首先先统计所有新鲜的橘子数目fresh,如果fresh大于0则一直执行 ...
随机推荐
- JS - 逻辑运算符 之 && 和 II
1.JS中的||符号: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值. 只要“||”前面为true,不管“||”后面是true还是false,都返回“ ...
- REST接口
全名是Representational State Transfer REST是设计风格而不是标准 建议将JSON格式作为标准响应格式 -------------------------------- ...
- 怎么更改Rstudio中的默认目录
方法一. 每次启动Rstudio之后,执行代码 setwd("F:/R/R_data") 默认目录就会修改为双引号内的位置路径. 方法二. 对Rstudio进行设置一次即可. ①点 ...
- 四、JavaScript之<script>标签的使用
一.代码如下 二.运行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- 060-PHP函数定义和调用
<?php function add($x,$y){ //定义函数add return $x+$y; } echo add(15,6); //调用函数并输出结果 ?>
- PGSQL基本操作语句
; --更新数据 ,,) ; --插入数据 ORDER BY app_name,flag asc/desc ; --查询数据并且排序 offset ; --查询起点0开始查询,返回5条数据 ORDER ...
- 快速搭建单机版Spring Cloud EurekaServer
原文链接:http://www.yiidian.com/springcloud/build-eureka-single.html 本文介绍搭建单机版的Eureka Server服务 1 创建项目,导入 ...
- 基于云开发开发 Web 应用(四):引入统计及 Crash 收集
在完成了产品的基础开发以后,接下来需要进行一些周边的工作,这些周边工具将会帮助下一步优化产品. 为什么要加应用统计和 Crash 收集 不少开发者在开发的时候,很少会意识到需要添加应用统计和 Cras ...
- HTML笔记01
HTML语法规范 <!DOCTYPE html>//HTML5规范 用于注释<!-- HTML文件主要包含头部分和体部分 <!-title> 指定网站标题 指定浏览器打开 ...
- 201771010123汪慧和《面向对象程序设计Java》第十五周实验总结
一.理论部分 1.JAR文件 (1)Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行. (2).jar文件(Java归档)既 ...