Faaez Razeen

Pacific Atlantic Water Flow

  • 2 min read
  • LC-Hard

3 years ago

Solution

TimeSpaceExplanation
O(mn)O(mn)
def pacificAtlantic(self, heights: List[List[int]]) -> List[List[int]]: pac, atl = set(), set() nrows, ncols = len(heights), len(heights[0]) def dfs(r, c, vis): if (r, c) not in vis: vis.add((r, c)) for dr, dc in [(0, 1), (0, -1), (1, 0), (-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 and heights[nr][nc] >= heights[r][c]: dfs(nr, nc, vis) for r in range(nrows): dfs(r, 0, pac) dfs(r, ncols - 1, atl) for c in range(ncols): dfs(0, c, pac) dfs(nrows - 1, c, atl) ans = [] for r in range(nrows): for c in range(ncols): if (r, c) in pac and (r, c) in atl: ans.append([r, c]) return ans