Skip to content

Commit 8b9cb42

Browse files
committed
adding algo
1 parent 2aac28f commit 8b9cb42

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from typing import List
2+
from collections import deque
3+
4+
class Solution:
5+
def orangesRotting(self, grid: List[List[int]]) -> int:
6+
freshy = 0
7+
time = 0
8+
m = len(grid)
9+
n = len(grid[0])
10+
11+
q = deque()
12+
13+
# Queue all rotten oranges and count fresh ones
14+
for r in range(m):
15+
for c in range(n):
16+
if grid[r][c] == 1:
17+
freshy += 1
18+
if grid[r][c] == 2:
19+
q.append((r, c))
20+
21+
# Run multi-source BFS
22+
while q:
23+
rotten_oranges = 0
24+
for _ in range(len(q)):
25+
r, c = q.popleft()
26+
for dr, dc in [(0, 1), (1, 0), (0, -1), (-1, 0)]:
27+
new_r, new_c = r + dr, c + dc
28+
if 0 <= new_r < m and 0 <= new_c < n and grid[new_r][new_c] == 1:
29+
30+
q.append((new_r, new_c))
31+
grid[new_r][new_c] = 2
32+
freshy -= 1
33+
rotten_oranges += 1
34+
35+
if rotten_oranges > 0:
36+
time += 1
37+
38+
return time if freshy == 0 else -1

0 commit comments

Comments
 (0)