Skip to content

Commit ba9973f

Browse files
Added solution
1 parent a0f7dc3 commit ba9973f

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

01matrix.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution:
2+
def updateMatrix(self, A: List[List[int]]) -> List[List[int]]:
3+
def validNeighbours(i, j, d):
4+
for dx, dy in (1, 0), (-1, 0), (0, 1), (0, -1):
5+
ni, nj, dn = i + dx, j + dy, d + 1
6+
if 0 <= ni < len(A) and 0 <= nj < len(A[0]):
7+
yield ni, nj, dn
8+
9+
def bfs(i, j):
10+
dist = collections.defaultdict(lambda: float('inf'))
11+
queue = collections.deque([(i, j, 0)])
12+
while queue:
13+
i, j, d = queue.popleft()
14+
if A[i][j] == 0:
15+
return d
16+
for ni, nj, dn in validNeighbours(i, j, d):
17+
if dn < dist[(ni, nj)]:
18+
dist[(ni, nj)] = dn
19+
queue.append((ni, nj, dn))
20+
return A[i][j]
21+
22+
23+
for i in range(len(A)):
24+
for j in range(len(A[0])):
25+
if A[i][j] == 1:
26+
A[i][j] = bfs(i, j)
27+
return A

0 commit comments

Comments
 (0)