#### 原题说明

In a given grid, each cell can have one of three values:

• the value 0 representing an empty cell;
• the value 1 representing a fresh orange;
• the value 2 representing a rotten orange.

Every minute, any fresh orange that is adjacent (4-directionally) to a rotten orange becomes rotten.

Return the minimum number of minutes that must elapse until no cell has a fresh orange. If this is impossible, return -1 instead.

Example 1:

Input: `[[2,1,1],[1,1,0],[0,1,1]]`
Output: `4`

Example 2:

Input: `[[2,1,1],[0,1,1],[1,0,1]]`
Output: `-1`
Explanation: The orange in the bottom left corner (row 2, column 0) is never rotten, because rotting only happens 4-directionally.

Example 3:

Input: `[[0,2]]`
Output: `0`
Explanation: Since there are already no fresh oranges at minute 0, the answer is just 0.

Note:

1. `1 <= grid.length <= 10`
2. `1 <= grid[0].length <= 10`
3. `grid[i][j] is only 0, 1, or 2`.

#### 解题思路

1. 遍历二维数组，统计新鲜橘子(value=1)的数量`fresh_count`，并且将烂橘子(value=2)的坐标加入队列qu
2. minutes为经过的时间，如果队列qu非空且`fresh_count`不为0，则用BFS方法遍历当前队列qu中所有元素
i）如果其周围有新鲜橘子，则`fresh_count--`，将其坐标加入qu，并更新为烂橘子(value=2)
ii) 否则直接跳过
每一轮遍历完使`minutes++`
3. 如果`fresh_count`不为0，则返回-1，否则返回`minutes`

#### 归纳总结

------ 关注公众号：猩猩的乐园 ------