Untitled

 avatar
unknown
plain_text
2 years ago
969 B
7
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...