Skip to content

Commit 6b7d3d7

Browse files
committed
Time: 113 ms (36.66%), Space: 14 MB (48.05%) - LeetHub
1 parent 2ed90cc commit 6b7d3d7

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution:
2+
def orangesRotting(self, grid: List[List[int]]) -> int:
3+
rows, cols = len(grid), len(grid[0])
4+
q = collections.deque()
5+
fresh, time = 0, 0
6+
7+
for r in range(rows):
8+
for c in range(cols):
9+
if grid[r][c] == 1:
10+
fresh += 1
11+
if grid[r][c] == 2:
12+
q.append((r, c))
13+
14+
visited = set()
15+
directions = [[1, 0],[-1, 0], [0, 1], [0, -1]]
16+
while q and fresh > 0:
17+
for i in range(len(q)):
18+
row, col = q.popleft()
19+
20+
for dr, dc in directions:
21+
r, c = row + dr, col + dc
22+
if (r >= 0 and c >= 0 and
23+
r < rows and c < cols and
24+
grid[r][c] == 1 and
25+
(r, c) not in visited):
26+
27+
grid[r][c] = 2
28+
visited.add((r, c))
29+
q.append((r, c))
30+
fresh -= 1
31+
time += 1
32+
33+
34+
return time if fresh == 0 else -1
35+
36+
37+
38+
39+
40+

0 commit comments

Comments
 (0)