在给定的网格中,每个单元格可以有以下三个值之一:

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。

返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

示例 1:

输入:[[2,1,1],[1,1,0],[0,1,1]]
输出:4
示例 2:

输入:[[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。
示例 3:

输入:[[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

提示:

1 <= grid.length <= 10
1 <= grid[0].length <= 10
grid[i][j] 仅为 0、1 或 2

代码:

class Solution {

public int orangesRotting(int[][] grid) {

if(grid.length==0)

{

return 0;

}

int count=1,k=3;//count表示每次遍历有没有新增腐烂的,k表示这是第几次腐烂的,3开始是第一次

while(count!=0)

{

for(int i=0;i<grid.length;i++)

{

if(i==0)

{

count = 0;

}

for(int j =0;j<grid[0].length;j++)

{

if(grid[i][j]==0)

{

continue;

}

if(grid[i][j]==1)

{

if(i>0&&grid[i-1][j]>=2&&grid[i-1][j]<k)

{

count++;

grid[i][j]=k;

}

else if(i<grid.length-1&&grid[i+1][j]>=2&&grid[i+1][j]<k)

{

count++;

grid[i][j] = k;

}

else if(j>0&&grid[i][j-1]>=2&&grid[i][j-1]<k)

{

count++;

grid[i][j] = k;

}

else if(j<grid[0].length-1&&grid[i][j+1]>=2&&grid[i][j+1]<k)

{

count++;

grid[i][j] = k;

}

}

}

}

k++;

}

for(int i=0;i<grid.length;i++)

{

for(int j =0;j<grid[0].length;j++)

{

if(grid[i][j]==1)

{

return -1;

}

}

}

return k - 4;

}

}

Leetcode--994. 腐烂的橘子(java)相关推荐

  1. leetcode 994:腐烂的橘子 java

    994. 腐烂的橘子 - 力扣(LeetCode) (leetcode-cn.com) 多源广度优先搜索,初始的所有的腐烂橘子,等价于广度优先搜索的同一层,然后对每一层进行搜索: class Solu ...

  2. LeetCode 994. 腐烂的橘子

    994. 腐烂的橘子 思路:直接bfs会出现2个腐烂的橘子在两边同时进行,这样会错误. 正确思路:每分钟变化后所有橘子状态为next_grid,直到橘子状态不改变.如果状态不变,且无新鲜的橘子则返回时 ...

  3. 【广度优先搜索】leetcode 994. 腐烂的橘子

    994. 腐烂的橘子 文章目录 题目描述 示例1: 示例2: 示例3: 提示 方法:多源广度优先搜索 解题思路 代码 复杂度分析 题目描述 在给定的 m x n 网格 grid 中,每个单元格可以有以 ...

  4. LeetCode 994. 腐烂的橘子(图的BFS)

    1. 题目 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会 ...

  5. leetcode 994 腐烂的橘子

    先给出题目: 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都 ...

  6. leetcode 994.腐烂的橘子

    题目: 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂 ...

  7. 图解LeetCode——994. 腐烂的橘子

    一.题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,腐烂的橘子 周围 4 个方向上相 ...

  8. Leetcode 994. 腐烂的橘子(DAY 262)---- 后端面试题(2020.1.5 华为机试真题)

    文章目录 原题题目 代码实现(首刷自解 双百 挺简单的) 原题题目 代码实现(首刷自解 双百 挺简单的) class Solution {public:inline void get_badorang ...

  9. 994. 腐烂的橘子(Leetcode)(多源BFS)

    994. 腐烂的橘子 难度简单85 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方 ...

  10. 994. 腐烂的橘子

    994. 腐烂的橘子 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新 ...

最新文章

  1. 红5java_关于skywang123456之“红黑树(五)之 Java的实现”的改进与内容添加
  2. 学习笔记Hadoop(七)—— Hadoop集群的安装与部署(4)—— 配置Hadoop集群
  3. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 3 TensorFlow Tutorial
  4. SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)
  5. Pytorch骨干网络性能测试
  6. Android学习之Shared Preference
  7. 嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究
  8. 我的技术回顾2019不止技术的一年
  9. 2.两数相加 golang
  10. 程序员福利各大平台免费接口,非常适用
  11. 使用反射建立一个用于生产短信对象的工厂方法
  12. 从“char []”转换为“LPCWSTR” 指向的类型无关
  13. php中execute函数,PHP:调用布尔值上的成员函数execute()
  14. phpmyadmin安全预防
  15. Android 学习之Fragment的创建
  16. 机器学习之聚类——模糊聚类FCM
  17. 使用高德开放平台制作个性地图(一)
  18. BetterScroll 2.0网络数据过慢,不能滚动问题
  19. 期刊投稿状态_期刊投稿后的7种状态,如何应对
  20. 应用Revit结合CAD图纸生成地形实体和地质模型

热门文章

  1. 程序员面试金典 - 面试题 17.13. 恢复空格(DP+Trie树)
  2. 泰坦尼克号生存预测入门
  3. 剑指Offer - 面试题43. 1~n整数中1出现的次数(找规律+公式)
  4. LeetCode 1014. 最佳观光组合
  5. convert.todatetime指定日期格式_MATLAB的时间与日期
  6. vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE
  7. mysql+inser+select_解析MySQL中INSERT INTO SELECT的使用
  8. python中的LEGB 规则
  9. 过拟合(overfitting)和欠拟合(underfitting)出现原因及如何避免方案
  10. linux虚拟中断virq,一种微内核操作系统的分区多核方法与流程