01 matrix
from collections import deque
class Solution:
def updateMatrix(self, mat: List[List[int]]) -> List[List[int]]:
def valid(row, col):
return 0 <= row < m and 0 <= col < n
matrix = [row[:] for row in mat]
m = len(matrix)
n = len(matrix[0])
queue = deque()
seen = set()
for row in range(m):
for col in range(n):
if matrix[row][col] == 0:
queue.append((row, col, 0))
seen.add((row, col))
directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
while queue:
row, col, steps = queue.popleft()
for dx, dy in directions:
next_row, next_col = row + dy, col + dx
if (next_row, next_col) not in seen and valid(next_row, next_col):
seen.add((next_row, next_col))
queue.append((next_row, next_col, steps + 1))
matrix[next_row][next_col] = steps + 1
return matrix
01 Matrix
Given an m x n binary matrix mat, return the distance of the nearest 0 for each cell.
The distance between two adjacent cells is 1.
Example 1:

Input: mat = [[0,0,0],[0,1,0],[0,0,0]] Output: [[0,0,0],[0,1,0],[0,0,0]]
Example 2:

Input: mat = [[0,0,0],[0,1,0],[1,1,1]] Output: [[0,0,0],[0,1,0],[1,2,1]]
Constraints:
m == mat.lengthn == mat[i].length1 <= m, n <= 1041 <= m * n <= 104mat[i][j]is either0or1.- There is at least one
0inmat.