994.Rotting Oranges
994.Rotting Oranges
难度:Easy
在给定的网格中,每个单元格可以有以下三个值之一:
值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。
返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。
示例 1:

解决方法,可以一步遍历一次,将相邻有2的值为1的单元格变成2。这里在遍历过程中先变为-1,以免将刚变成2的当做腐烂橘子继续传递。 为了方便遍历,将数组扩展一周,这样每次都可以比较上下左右四个方向。 当不可遍历时,就是无法继续传递的时候,需要判断当前是否还存在1,如果存在,则表示无法完全腐烂,这里使用布尔常量can来表示。 flag表示是否已经无法继续遍历。 层次遍历可以使用递归实现。
执行用时 :4 ms, 在所有 C++ 提交中击败了98.79%的用户 内存消耗 :9.2 MB, 在所有 C++ 提交中击败了89.23%的用户
Last updated
Was this helpful?