Search⌘ K
AI Features

Pacific Atlantic Water Flow

Understand the Pacific Atlantic Water Flow challenge by analyzing how water flows through a grid representing island elevations. Learn to identify cells that channel water to both the Pacific and Atlantic oceans and implement an optimal solution within given constraints. This lesson helps build problem-solving skills vital for coding interviews involving graph traversal and matrix manipulation.

Statement

Imagine an island with a rectangular shape that touches both the Pacific and Atlantic oceans. The northern and western sides meet the Pacific, while the southern and eastern sides touch the Atlantic. This island is divided into square cells.

To depict the height above sea level of each cell, we use an integer matrix, heights, of size (m×n)(m \times n). Here, heights[r][c] represents the elevation of the cell at coordinate (r,c)(r, c).

When heavy rain pours down on the island every few months, water flows from the island to both the Pacific and Atlantic oceans. The path of flow depends on the heights of the cells.

Consider a cell with a height of 99 that’s higher than or equal to its neighboring cells to the north, east, west, and south. This indicates that water can flow from this cell to adjacent ones. Similarly, this process is repeated until the flow of water either reaches the Pacific or Atlantic border or a cell that can not flow water to any of its neighbors. If the flow of water starting from a cell can direct water to both the Pacific and Atlantic Ocean borders, we include it in the output.

Note: Any cell adjacent to an ocean can channel water into the ocean.

With this information, your task is to return a 2D array of coordinates. Each entry (ri,ci)(r_i, c_i) in this array indicates that rainwater can flow from the cell at coordinate (ri,ci)(r_i, c_i) to both the Pacific and Atlantic oceans.

Constraints:

  • m==m == heights.length

  • n==n == heights[r].length, where 0r<m0 \leq r \lt m

  • 1m1 \leq m, n30n \leq 30

  • 00 \leq heights[r][c] 103\leq 10^3

Examples

canvasAnimation-image
1 / 6

Understand the problem

Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:

Pacific Atlantic Water Flow

1.

What is the output if the following array is given as input?

heights = [[1, 1], [0, 1], [0, 0]]

A.

[[0, 1], [2, 1], [0, 0], [1, 1], [2, 0], [1, 0]]

B.

[[0, 1], [1, 1], [2, 0], [1, 0]]

C.

[[0, 1], [2, 1], [0, 0], [1, 1], [2, 0]]

D.

[[0, 1], [2, 1], [0, 0], [1, 1], [2, 0]]


1 / 3

Try it yourself

Implement your solution in the following coding playground:

Note: The order in which the 2D grid appears doesn’t matter.

An optimal solution to this problem runs in O(m.n) time and takes O(m.n) space.

JavaScript
usercode > main.js
function estimateWaterFlow(heights) {
// Replace this placeholder return statement with your code
return [[]]
}
export { estimateWaterFlow };
Pacific Atlantic Water Flow