---
title: '11. Container With Most Water'
description: You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the i^th line are (i, 0) and (i, height[i])
sidebar:
  label: 'Container With Most Water'
  badge: 'Medium'
---

Array

::::warning
Notice that you may not slant the container.
::::

### Example 1:
- Input: `height = [1,8,6,2,5,4,8,3,7]`
- Output: `49`
- Explanation: 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 2:
- Input: `height = [1,1]`
- Output: `1`

### Constraints:

- `n == height.length`
- `2 <= n <= 10^5`
- `0 <= height[i] <= 10^4`

## Approach

```mermaid
flowchart TD
  S(["maxArea(height)"]) --> I["res = 0, left = 0, right = len - 1"]
  I --> W{"left < right?"}
  W -- no --> E(["return res"])
  W -- yes --> A["area = (right - left) * min(height[left], height[right])"]
  A --> M["res = max(res, area)"]
  M --> C{"height[left] < height[right]?"}
  C -- yes --> L["left += 1 — drop the shorter wall"]
  C -- no --> R["right -= 1 — drop the shorter wall"]
  L --> W
  R --> W
```

## Solution

```py
class Solution:
    def maxArea(self, height: List[int]) -> int:  # noqa: F821
        res = 0
        left = 0
        right = len(height) - 1

        while left < right:
            area = (right - left) * min(height[left], height[right])
            res = max(res, area)
            if height[left] < height[right]:
                left += 1
            else:
                right -= 1

        return res
```

## Explanation

[Container with Most Water - Leetcode 11 - Python](https://www.youtube.com/watch?v=UuiTKBwPgAo)
