Untitled
unknown
plain_text
3 years ago
969 B
16
Indexable
class Solution:
def orangesRotting(self, grid: List[List[int]]) -> int:
time = 0
fresh = 0
queue = deque([])
moves= [[-1,0],[1,0],[0,1],[0,-1]]
num_rows=len(grid)
num_cols=len(grid[0])
for i in range(num_rows):
for j in range(num_cols):
if grid[i][j]==1:
fresh+=1
if grid[i][j]==2:
queue.append((i,j))
while queue and fresh:
time+=1
size = len(queue)
for i in range(size):
x, y = queue.popleft()
for dx,dy in moves:
tempX=x+dx
tempY=y+dy
if 0<=tempX<num_rows and 0<=tempY<num_cols and grid[tempX][tempY]==1:
queue.append((tempX,tempY))
grid[tempX][tempY]=2
fresh-=1
return -1 if fresh else time
Editor is loading...