1、题目描述
在给定的 m x n
网格 grid
中,每个单元格可以有以下三个值之一:
- 值
0
代表空单元格; - 值
1
代表新鲜橘子; - 值
2
代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。
返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1
。
示例 1:
输入:grid = [[2,1,1],[1,1,0],[0,1,1]] 输出:4
2、思路
2.1 题目分析
本题旨在用原始的所有腐烂的橘子(2)将新鲜的橘子(1)进行感染,求其最短的时间。根据该分析可得本题旨在求所有腐烂的橘子到所有新鲜的橘子的最短路径,从而可以发现本文的关键算法为bfs(广度优先算法)。
2.2 网格类问题的bfs方法
岛屿类问题可以类比二叉树的层序遍历方法,首先,二叉树的bfs方法如下所示: