DSA AnimatorDSA animations
Container With Most Water LC #11 Medium Two Pointers
Problem

You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]). Find two lines that together with the x-axis form a container, such that the container contains the most water. Return the maximum amount of water.

Example 1
Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: Lines at index 1 and 8 form the best container: min(8,7)×7 = 49.
Example 2
Input: height = [1,1]
Output: 1
Constraints: n == height.length; 2 ≤ n ≤ 105; 0 ≤ height[i] ≤ 104
Try Examples
Custom:
Approach
Greedy Two Pointer
L at left, R at right. Compute area = min(h[L],h[R])×(R-L). Move the shorter wall inward — the taller wall can never help with a smaller base. O(n) time, O(1) space.
Height Bars
area = ?
Variables
L
—
R
—
Area
—
Max Area
0
Step Logic
Press ▶ Play or Next Step to begin.
✅
Ready
0 / 0
Select an example above and press Play.
Algorithm
1
L=0, R=n-1, maxArea=0
2
area = min(h[L], h[R]) × (R-L)
3
maxArea = max(maxArea, area)
4
Move shorter wall: h[L]<h[R] → L++ else R--
Time
O(n)
Space
O(1)
Why It Works

Width decreases as pointers move inward. To possibly increase area, need greater height. The shorter wall limits height — moving it may find a taller wall. Moving the taller wall can only decrease or maintain height with a smaller width — it never helps. So we always move the shorter wall inward, guaranteeing we never miss the optimal pair.

How to solve Container With Most Water

LeetCode 11 · Medium · Arrays · Pattern: Two Pointers

Why the obvious approach is slow

Checking every pair is O(n²). And picking the two tallest lines fails, because the width matters too.

The key idea

Start with the widest container, one pointer at each end. The water level is set by the shorter line, so moving the taller line inward can never help. So always move the shorter line inward, and keep the best area.

Remember

Start widest, and always move the shorter line. The shorter line limits the water.

Run the animation above on your own input, or watch the 1:29 video explanation of Container With Most Water with a dry run and Java code.

More Arrays problems