0%

994. Rotting Oranges

https://leetcode.com/problems/rotting-oranges/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution:
def orangesRotting(self, G: List[List[int]]) -> int:
def f(i,j,k):
for x,y in [(i+1,j),(i-1,j),(i,j+1),(i,j-1)]:
if 0<=x<M and 0<=y<N and G[x][y]==1:
Q.append((x,y,k+1))
G[x][y]=0

M=len(G)
N=len(G[0])
ans=0
Q=deque()
for i in range(M):
for j in range(N):
if G[i][j]==2:
Q.append((i,j,0))
while Q:
i,j,k=Q.popleft()
ans=max(ans,k)
f(i,j,k)

for i in range(M):
for j in range(N):
if G[i][j]==1:
ans=-1
return ans