题目:在给定的网格中,每个单元格可以有以下三个值之一:
- 值
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 。
这道题用到了BFS算法,这是我的题解
/**
* @param {number[][]} grid
* @return {number}
*/
/**
* BFS算法
* 用queue来存储腐烂的橘子,total存储橘子总数量,取出队列第一个橘子,total - 1,判断其上下左右是否为新鲜橘子,若是,则设置值为2,加入队列。一轮队列橘子取完后,time + 1;直至total = 0,返回time,否则返回-1
*/
var orangesRotting = function(grid) {
let[queue,time,total] = [[],0,0];
for(let i = 0; i < grid.length; i++){