BFS

leetcode 994 腐烂的橘子 https://leetcode-cn.com/problems/rotting-oranges/

DFS(深度优先搜索)和 BFS(广度优先搜索)
DFS 与 BFS
BFS 可以看成是层序遍历。从某个结点出发,BFS 首先遍历到距离为 1 的结点,然后是距离为 2、3、4…… 的结点。因此,BFS 可以用来求最短路径问题。BFS 先搜索到的结点,一定是距离最近的结点。
再看看这道题的题目要求:返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。翻译一下,实际上就是求腐烂橘子到所有新鲜橘子的最短路径。那么这道题使用 BFS,应该是毫无疑问的了。

解题思路
1.找到所有初值为2的点入队,pos记录队尾的位置
2.出队头元素,判断其四个方向是否有值为1的点,有的话把值改为2,然后将其入队
3.重复第2步,当队头等于pos时说明一次感染完毕,时间加1,更新pos为当前队尾位置;队空时说明感染结束
4.遍历grid是否有还存在值为1的点,有则返回-1,否则返回时间值

posted @ 2020-10-22 10:25  ginn123  阅读(121)  评论(0)    收藏  举报