classSolution: deforangesRotting(self, grid: List[List[int]]) -> int: m = len(grid) n = len(grid[0]) #两个集合记录腐烂和新鲜的橘子 rotten = {(i,j) for i inrange(m) for j inrange(n) if grid[i][j] == 2} fresh = {(i,j) for i inrange(m) for j inrange(n) if grid[i][j] == 1}
time = 0 #下面只记录当前时间会腐烂的橘子,已经把腐烂扩散过的橘子拿出去 while fresh: ifnot rotten: return -1 rotten = {(i + di,j + dj) for i,j in rotten for di,dj in [(0,1),(0,-1),(1,0),(-1,0)] if (i + di,j+dj) in fresh} fresh -= rotten time += 1 return time