题目

https://leetcode.com/problems/rotting-oranges/

题解

和 leetcode 542. 01 Matrix | 542. 01 矩阵(图解,广度优先搜索) 这道题几乎没有区别,直接用 542 的图,来讲一下“感染” 的过程,实际上就是个 BFS


只不过本题的 0,1,2 都被占用了,所以我们用 term=3 开始,标记感染轮数。感染过程中,每一轮 term+1,并且记录每一轮感染的数量 incr。如果某一轮出现 incr=0,即没有任何 orange 被感染,则说明感染过程结束,退出循环。

最后,感染完成后,检查一下矩阵中有没有剩余 1.

class Solution {public int orangesRotting(int[][] grid) {int M = grid.length;int N = grid[0].length;int incr = 1; // num of affected in this termint term = 3; // 0, 1, 2 already in use, so we mark 'affected' from term=3. term will incr by 1 in each round.while (incr > 0) {incr = 0;for (int i = 0; i < M; i++) {for (int j = 0; j < N; j++) {if (grid[i][j] == term - 1) { // grid[i][j] == term - 1 means this coordinate is affected in the last termif (i - 1 >= 0 && grid[i - 1][j] == 1) { // affect leftgrid[i - 1][j] = term;incr++;}if (i + 1 < M && grid[i + 1][j] == 1) { // affect rightgrid[i + 1][j] = term;incr++;}if (j - 1 >= 0 && grid[i][j - 1] == 1) { // affect upgrid[i][j - 1] = term;incr++;}if (j + 1 < N && grid[i][j + 1] == 1) { // affect downgrid[i][j + 1] = term;incr++;}}}}term++;}// check no 1for (int i = 0; i < M; i++) {for (int j = 0; j < N; j++) {if (grid[i][j] == 1) return -1;}}return term - 4;}
}

leetcode 994. Rotting Oranges | 994. 腐烂的橘子(BFS)相关推荐

  1. Leetcode广度优先搜索笔记2 腐烂的橘子

    994. 腐烂的橘子:带有变量控制的矩阵中的广度优先搜索 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的 ...

  2. LeetCode994. 腐烂的橘子( BFS )

    力扣 解题思路: 广度优先搜索 1. 先找到所有的腐烂橘子,入队 (queue),用第一批带出新一批腐烂的橘子 2. 每一批橘子都会在一分钟之内腐烂 , 所以此题可以转化为求 BFS 执行的大循环的次 ...

  3. [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994

    [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994 唉--之前写过笔记总结的问题,还是又卡住了. 自挂东南枝-- 题目地址: Rotting Oranges 题目如下: ...

  4. 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子

    一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...

  5. leetcode 994:腐烂的橘子 java

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

  6. LeetCode 994. 腐烂的橘子

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

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

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

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

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

  9. leetcode 994 腐烂的橘子

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

最新文章

  1. 3dmax Vray建筑可视化入门学习教程
  2. Smarty中文手册,Smarty教程,Smarty模板的入门教材
  3. SQL SERVER全面优化-------索引有多重要?
  4. iOS 访问权限设置
  5. localStorage
  6. android电视盒子解码很慢,电视盒子反应慢又卡原因及解决办法推荐!
  7. 基于DBus的进程间通信(IPC)
  8. memcache运行机制(转)
  9. 从V1到V4,让你读懂YOLO原理——深度AI科普团队
  10. Postgres 异常断电导致启动失败的解决方法
  11. Button控件的点击事件
  12. Drools教程 —— 安装及eclipse项目创建
  13. 架构师职位常见面试题
  14. mysql 1114错误_mysql出现错误编码1114的解决方法
  15. 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
  16. 企业号 网页授权 php,微信企业号开发之网页授权接口调用示例
  17. 操作系统有哪些.智能手机的操作系统有哪些?
  18. 138个医共体!紧密型县域医共体建设和改革,这个省这么干
  19. android ExtCertPathValidatorException: Could not validate
  20. 关于RapidSSL证书

热门文章

  1. 蓝桥杯 - 翻硬币(贪心)
  2. php mysql int string_mysql查出的 int 型字段都是 string
  3. m3u8文件在手机上用什么软件看_如何用手机从一个网页下载视频
  4. QT学习笔记(2)----- QT安装教程
  5. 简单的IDT HOOK介绍
  6. SQLLite (二) :sqlite3_open, sqlite3_exec, slite3_close
  7. 个推异常值检测和实战应用
  8. 高级数据结构与算法 | AVL树 (高度平衡树)
  9. 你应该知道的缓存进化史
  10. Golang 正在成为互联网大厂的主流编程语言!