feat(work): implement Pacific Atlantic Water Flow solution

This commit is contained in:
Prad Nukala committed 2026-09-21 18:05:35 -04:00
1 parent f5f31ba1c3
commit ae1d1ceede
1 file changed
+48 -14
@@ -24,7 +24,7 @@ Return a 2D list of grid coordinates result where result[i] = [ri,
ci] denotes that rain water can flow from cell (ri, ci) to both the ci] denotes that rain water can flow from cell (ri, ci) to both the
Pacific and Atlantic oceans. Pacific and Atlantic oceans.
Example 1: Example 1:
@@ -33,19 +33,19 @@ Input: heights =
Output: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]] Output: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Explanation: The following cells can flow to the Pacific and Atlantic Explanation: The following cells can flow to the Pacific and Atlantic
oceans, as shown below: oceans, as shown below:
[0,4]: [0,4] -> Pacific Ocean [0,4]: [0,4] -> Pacific Ocean
[0,4] -> Atlantic Ocean [0,4] -> Atlantic Ocean
[1,3]: [1,3] -> [0,3] -> Pacific Ocean [1,3]: [1,3] -> [0,3] -> Pacific Ocean
[1,3] -> [1,4] -> Atlantic Ocean [1,3] -> [1,4] -> Atlantic Ocean
[1,4]: [1,4] -> [1,3] -> [0,3] -> Pacific Ocean [1,4]: [1,4] -> [1,3] -> [0,3] -> Pacific Ocean
[1,4] -> Atlantic Ocean [1,4] -> Atlantic Ocean
[2,2]: [2,2] -> [1,2] -> [0,2] -> Pacific Ocean [2,2]: [2,2] -> [1,2] -> [0,2] -> Pacific Ocean
[2,2] -> [2,3] -> [2,4] -> Atlantic Ocean [2,2] -> [2,3] -> [2,4] -> Atlantic Ocean
[3,0]: [3,0] -> Pacific Ocean [3,0]: [3,0] -> Pacific Ocean
[3,0] -> [4,0] -> Atlantic Ocean [3,0] -> [4,0] -> Atlantic Ocean
[3,1]: [3,1] -> [3,0] -> Pacific Ocean [3,1]: [3,1] -> [3,0] -> Pacific Ocean
[3,1] -> [4,1] -> Atlantic Ocean [3,1] -> [4,1] -> Atlantic Ocean
[4,0]: [4,0] -> Pacific Ocean [4,0]: [4,0] -> Pacific Ocean
[4,0] -> Atlantic Ocean [4,0] -> Atlantic Ocean
Note that there are other possible paths for these cells to flow to Note that there are other possible paths for these cells to flow to
the Pacific and Atlantic oceans. the Pacific and Atlantic oceans.
@@ -57,19 +57,53 @@ Output: [[0,0]]
Explanation: The water can flow from the only cell to the Pacific and Explanation: The water can flow from the only cell to the Pacific and
Atlantic oceans. Atlantic oceans.
Constraints: Constraints:
• m == heights.length • m == heights.length
• n == heights[r].length • n == heights[r].length
• 1 <= m, n <= 200 • 1 <= m, n <= 200
• 0 <= heights[r][c] <= 10^5 • 0 <= heights[r][c] <= 10^5
""" """
class Solution: class Solution:
def pacificAtlantic(self, heights: list[list[int]]) -> list[list[int]]: def pacificAtlantic(self, heights: list[list[int]]) -> list[list[int]]:
rows, cols = len(heights), len(heights[0])
pac, atl = set(), set()
def dfs(r, c, seen, prevHeight):
if (
(r, c) in seen
or r < 0
or c < 0
or r == rows
or c == cols
or heights[r][c] < prevHeight
):
return
seen.add((r, c))
dfs(r + 1, c, seen, heights[r][c])
dfs(r - 1, c, seen, heights[r][c])
dfs(r, c + 1, seen, heights[r][c])
dfs(r, c - 1, seen, heights[r][c])
for c in range(cols):
dfs(0, c, pac, heights[0][c])
dfs(rows - 1, c, atl, heights[rows - 1][c])
for r in range(rows):
dfs(r, 0, pac, heights[r][0])
dfs(r, cols - 1, atl, heights[r][cols - 1])
res = []
for r in range(rows):
for c in range(cols):
if (r, c) in pac and (r, c) in atl:
res.append([r, c])
return res