# 11. Container With Most Water (Medium)

https://leetcode.com/problems/container-with-most-water/

Given n non-negative integers a1, a2, ..., a, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container and n is at least 2.

The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

Example:

```Input: [1,8,6,2,5,4,8,3,7]
Output: 49```

## Solutions

``````class Solution {

// Note

// 1. All neighboring slabs are separated at equal space.
// 2. After choosing two slabs, you can assume other slabs are removed when holding water, different from
// https://leetcode.com/problems/trapping-rain-water/

public int maxArea(int[] height) {
int len = height.length;
if (height == null || len == 0) {
return 0;
}

// left and right pointer
int lptr = 0;
int rptr = len - 1;

int ans = 0;

// Narrow your search from both sides
while (lptr < rptr) {
int shortestSlab = Math.min(height[lptr], height[rptr]);
int area = (rptr - lptr) * shortestSlab;

if (area > ans) {
ans = area;
}

if (height[lptr] < height[rptr]) {
lptr++;
} else {
rptr--;
}
}

return ans;
}
}
``````