Given a matrix consists of 0 and 1, find the distance of the nearest 0 for each cell.
The distance between two adjacent cells is 1.
Example 1:
Input:1
2
30 0 0
0 1 0
0 0 0
Output:1
2
30 0 0
0 1 0
0 0 0
Example 2:
Input:1
2
30 0 0
0 1 0
1 1 1
Output:1
2
30 0 0
0 1 0
1 2 1
Note:
The number of elements of the given matrix will not exceed 10,000.
There are at least one 0 in the given matrix.
The cells are adjacent in only four directions: up, down, left and right.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19from collections import deque
def main(matrix):
m,n = len(matrix),len(matrix[0])
q = deque()
for i in range(m):
for j in range(n):
if matrix[i][j] != 0:
matrix[i][j] = 20000
else:
q.append((i,j))
while q:
x,y = q.popleft()
for r,c in ((x-1,y),(x,y-1),(x,y+1),(x+1,y)):
z = matrix[x][y] + 1
if 0<=r<m and 0<=c<n and matrix[r][c] > z:
matrix[r][c] = z
q.append((r,c))
return matrix