01 Matrix
BFS
Last updated
BFS
Last updated
from collections import deque
class Solution:
def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
q = deque()
visited = set()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
q.append([i,j])
visited.add((i,j))
d = [[1,0], [-1, 0], [0,1], [0,-1]]
while q:
node = q.popleft()
x = node[0]
y = node[1]
for i in d:
newX = x+i[0]
newY = y+i[1]
if newX < 0 or newX >= len(matrix) or newY >= len(matrix[0]) or newY < 0 or (newX, newY) in visited:
continue
matrix[newX][newY] = matrix[x][y]+1
q.append([newX, newY])
visited.add((newX, newY))
return matrix
from collections import deque
class Solution:
def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
q = deque()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
q.append([i,j])
else:
matrix[i][j] = float('inf')
d = [[1,0], [-1, 0], [0,1], [0,-1]]
while q:
node = q.popleft()
x = node[0]
y = node[1]
for i in d:
newX = x+i[0]
newY = y+i[1]
if newX < 0 or newX >= len(matrix) or newY >= len(matrix[0]) or newY < 0 or matrix[newX][newY] <= matrix[x][y]+1:
continue
matrix[newX][newY] = matrix[x][y]+1
q.append([newX, newY])
return matrix