994. Rotting Oranges
![17368230-894e404b28479b50.PNG](https://i-blog.csdnimg.cn/blog_migrate/0352c906c9b5e807cb743c7e2da1408f.webp?x-image-process=image/format,png)
994. Rotting Oranges
首先,记录下所有1的个数,并把所有2的放入一个队列,记录步数,每一步把队列里面相邻的1换成2,更新1的个数,并把腐烂的放入队列。
代码如下:
class Solution(object):
def orangesRotting(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
fresh = 0
qu = []
m, n = len(grid), len(grid[0])
for i in range(m):
for j in range(n):
if grid[i][j] == 1:
fresh += 1
elif grid[i][j] == 2:
qu.append((i,j))
if fresh == 0:
return 0
step = 0
direction = [(0,1), (0,-1), (1,0), (-1,0)]
while qu:
step += 1
for i in range(len(qu)):
temp = qu.pop(0)
for j in range(4):
x = temp[0] + direction[j][0]
y = temp[1] + direction[j][1]
if x>=0 and y>=0 and x<m and y<n and grid[x][y]==1:
fresh -= 1
grid[x][y] = 2
qu.append((x,y))
if fresh == 0:
return step
return -1