LeetCode994 Rotting Oranges解题方案
LeetCode994 Rotting Oranges
题目描述
In a given grid, each cell can have one of three values:
- the value
0
representing an empty cell; - the value
1
representing a fresh orange; - the value
2
representing a rotten orange.
Every minute, any fresh orange that is adjacent (4-directionally) to a rotten orange becomes rotten.
Return the minimum number of minutes that must elapse until no cell has a fresh orange. If this is impossible, return -1
instead.
Example 1:
Input: [[2,1,1],[1,1,0],[0,1,1]]
Output: 4
Example 2:
Input: [[2,1,1],[0,1,1],[1,0,1]]
Output: -1
Explanation: The orange in the bottom left corner (row 2, column 0) is never rotten, because rotting only happens 4-directionally.
Example 3:
Input: [[0,2]]
Output: 0
Explanation: Since there are already no fresh oranges at minute 0, the answer is just 0.
Note:
1 <= grid.length <= 10
1 <= grid[0].length <= 10
grid[i][j]
is only0
,1
, or2
.
思路
Step1: 统计数组中的新鲜橘子的个数,统计腐败橘子并记录腐败橘子的位置,将记录的值放入数组中。
int fresh=0;
Queue<int[]> q = new LinkedList();
for(int x=0;x<grid.length;x++)for(int y=0;y<grid[0].length;y++){if(grid[x][y]==1)fresh++;else if(grid[x][y]==2){int array[]={x,y};q.add(array);}}
Step2: 设定方向数组direction[1,0,-1,0,1] 因为每个腐败橘子会让其上下左右腐败,根据方向进行BFS。
int minutes=0;
int direction[]={1,0,-1,0,1};
while(fresh!=0 && !q.isEmpty()){int size = q.size();while(size!=0){int arr[]=q.remove();int x=arr[0];int y=arr[1];for(int i=0;i<4;i++){int dx=x+direction[i];int dy=y+direction[i+1];if(dx<0||dx>=grid.length||dy<0||dy>=grid[0].length||grid[dx][dy]!=1)continue;fresh--;grid[dx][dy]=2;int n[]={dx,dy};q.add(n);}size--;}minutes++;
}
Step3:因为会存在与腐败橘子不相邻的新鲜橘子,因此当fresh不为0时,返回-1.
if(fresh==0)return minutes;
return -1;
LeetCode994 Rotting Oranges解题方案相关推荐
- 算法大赛十强战队解题方案大公开!【附PPT下载】
2020腾讯广告算法大赛已圆满结束,决赛舞台上一个又一个设计巧妙.思路清晰的解题方案,仍旧让每位观众都记忆犹新. 纵观决赛,其中最显眼的就是冠军战队"DYG"对于BERT的应用,他 ...
- 小区文化建设成居民困扰,捷径智慧物业系统提出解题方案
小区文化建设成居民困扰,捷径智慧物业系统提出解题方案 截至至今,西安地区的社区图书阅览室仍然处于较尴尬的地位. 社区图书阅览室借阅图书不方便,来看书的居民很难查找到自己想阅读的图书,图书摆放无序化,社 ...
- 2018中国高校计算机大赛—大数据挑战赛(top2解题方案)
比赛链接:https://www.kesci.com/home/competition/5ab8c36a8643e33f5138cba4/leaderboard/1 相关链接:https://mp.w ...
- CCF BDCI面向电信行业存量用户的智能套餐个性化匹配模型解题方案
参考源码:Top2方案 原始数据 问题主要是根据如下的数据所进行的11类分类问题. 字段 中文名 数据类型 说明 USERID 用户ID VARCHAR2(50) 用户编码,标识用户的唯一字段 cur ...
- leetcode 994. Rotting Oranges | 994. 腐烂的橘子(BFS)
题目 https://leetcode.com/problems/rotting-oranges/ 题解 和 leetcode 542. 01 Matrix | 542. 01 矩阵(图解,广度优先搜 ...
- leetcode解题方案--015--3 sum
题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
- 双赛道20支战队解题思路大公开,线上Poster Session等你来
2021腾讯广告算法大赛从4月启动,经过两个多月的激烈比赛,已经在7月7日分别得出了两个赛道的入围排行榜.8月16日 14:00,2021腾讯广告算法大赛将以网络直播形式举行决赛答辩. 决赛当天,& ...
- 花式上分算法大赛,速看鹅厂六强团队解题思路集锦【附PPT下载】
历经4个月的算法征程,伴随着外部.内部赛道终极答辩,2020腾讯广告算法大赛正式落下帷幕(点击回顾).本届赛事火爆空前,外部赛道吸引了上万名全国选手火热PK,内部赛道的角逐也颇为激烈,吸引了来自 TE ...
- How To Solve It!怎样解题
人生会遇到各种各样的问题,人生的轨迹就是解决这些突如其来的问题.通过解决问题我们得到成长,所以如果你觉得生活中有各种各样的问题,也不该过分苦恼,人生像是一场游戏,如果没有一些任务,该是多么无聊呀. 闲 ...
最新文章
- 全卷积神经网路【U-net项目实战】Unet++
- vue组件父子组件之间传递数据
- 临床科研设计的主要内容
- 【51单片机快速入门指南】8:看门狗定时器(WDT)
- 视频号、抖音、海外Tiktok到底该选择那个平台更好
- UUID 查看linux的UUID 与 SVN 工程的 UUID。(两者之间没有联系)
- SAAS及PAAS的概念
- java调用python脚本并向python脚本传递参数
- Android中文API(125) —— VideoView
- 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
- Oracle函数-分析函数-获取上一条(下一条)记录
- IOS高德地图使用说明
- 敏捷结果30天之第十一天:高效能、慢生活
- ubuntu windows双系统默认启动项切换
- 白帽子学习——Metasploit渗透测试指南
- SESAM | GeniE 实用教程
- 切切切词!新词发现算法TopWORDS的原理及实现|实在智能AI+RPA学院
- 去哪儿网人工客服电话
- Firebird数据库表结构及数据导出
- 定类,定序,定距,定比