---
round: 3
ticket_no: 29
source_no: 1
slug: container-with-most-water
topic: Two Pointers
difficulty: Medium
leetcode_id: 11
attempted: true
score:
verdict:
reviewed_at:
---

# Билет 29 — Container With Most Water

## Условие (как предъявлено)

Дан массив целых чисел `height` длины `n`. Каждая `height[i]` — высота вертикальной линии в точке `i`. Найдите две линии, которые вместе с осью X образуют контейнер, вмещающий максимальное количество воды.

Площадь контейнера = `min(height[i], height[j]) * (j - i)`.

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

Constraints: `2 <= n <= 10^5`; `0 <= height[i] <= 10^4`.

## Ответ

> Вот, написано, что найдите две линии, на самом деле здесь спрашивают, надо максимальную площадь, получается, вернуть. Поэтому мы должны сначала переменную такую создать, которая хранит максимальное. Ну, значит, оно 0 будет у нас изначально. И дальше у нас указатели слева и справа. Мы с двух сторон идём по этому массиву, значит, двигаемся и рассчитываем по формуле площадь текущую. Рассчитали её, она становится новой максимальной. И дальше мы сдвигаем тот указатель, который показывает на меньшую из створок. Рассчитываем на каждом шаге новую площадь, которая у нас появляется, и доходим так, пока они друг с другом не встречаются.

## Разбор

**Что верно:**

**Что упущено и ошибки:**

**Эталонная идея:**

**Время:** O(...) — что доминирует

**Память:** O(...) дополнительная (+ O(...) на выход / стек рекурсии)

**Граничные случаи:** 1) ... 2) ... 3) ...

**Критерии:** идея ⚠️ · структура данных ⚠️ · сложность ⚠️ · граничные случаи ⚠️

**Канон сложности:** сверить с [`../complexity-cheat-sheet.md`](../complexity-cheat-sheet.md) (таблица по 32 задачам)

**Разбор задачи:** [`../../algo-solutions/01-must-have/01-two-pointers/01-container-with-most-water.md`](../../algo-solutions/01-must-have/01-two-pointers/01-container-with-most-water.md)