手把手教你用TiggerRamDisk绕过iPhone/iPad激活锁(支持iOS16.3,Win7/Win10/Mac教程)
2026/6/15 6:32:53
-1;否则返回扩散的分钟数。from typing import List from collections import deque class Solution: def orangesRotting(self, grid: List[List[int]]) -> int: m, n = len(grid), len(grid[0]) q = deque() # 存储腐烂橘子的坐标 fresh = 0 # 新鲜橘子数量 # 初始化:统计新鲜橘子,将腐烂橘子加入队列 for i in range(m): for j in range(n): if grid[i][j] == 1: fresh += 1 elif grid[i][j] == 2: q.append((i, j)) # 边界情况:无新鲜橘子,直接返回0 if fresh == 0: return 0 minutes = 0 # 记录耗时 # 上下左右四个方向 dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)] # 多源BFS扩散 while q and fresh > 0: # 处理当前层(当前分钟的所有腐烂橘子) level_size = len(q) for _ in range(level_size): i, j = q.popleft() # 遍历四个方向 for dx, dy in dirs: x = i + dx y = j + dy # 坐标合法且为新鲜橘子 if 0 <= x < m and 0 <= y < n and grid[x][y] == 1: grid[x][y] = 2 # 标记为腐烂 fresh -= 1 # 新鲜橘子数减1 q.append((x, y)) # 加入队列供下一层处理 minutes += 1 # 每处理完一层,时间+1 # 若仍有新鲜橘子,返回-1;否则返回耗时 return minutes if fresh == 0 else -1