Faaez Razeen

Matrix 01

  • 2 min read
  • Array
  • Graph
  • Matrix
  • LC-Medium

3 years ago

Solution

Data Structures & Algorithms#^d8d193

TimeSpaceExplanation
O(mn)O(mn)
def updateMatrix(self, mat: List[List[int]]) -> List[List[int]]: q = deque() vis = set() nrows, ncols = len(mat), len(mat[0]) for r in range(nrows): for c in range(ncols): if mat[r][c] == 0: q.append((r, c, 0)) while q: for _ in range(len(q)): r, c, dist = q.popleft() if (r, c) not in vis: vis.add((r, c)) mat[r][c] = dist for dr, dc in [(0, 1), (1, 0), (0, -1), (-1, 0)]: nr, nc = r + dr, c + dc if nr >= 0 and nr < nrows and nc >= 0 and nc < ncols and (nr, nc) not in vis: q.append((nr, nc, dist + 1)) return mat