Menu
CoddyTech

Container With Most Water

Дан список height неотрицательных целых чисел. Линия i — это вертикальная стена высотой height[i], расположенная в позиции i. Любые две линии вместе с землёй образуют контейнер, который вмещает столько воды, сколько равно высоте более короткой линии, умноженной на расстояние между двумя линиями. Остальные линии не мешают. Верните максимальное количество воды, которое может вместить одна пара линий.

Функция

maxArea(height: integer-array) → integer
heightinteger-array
высоты строк в позициях 0, 1, 2 и так далее
Возвращаетinteger
наибольшее количество воды, которое могут вместить две линии

Ограничения

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • Ответ не превышает 108, поэтому помещается в 32-битное целое число.

Примеры

Ввод
height = [3, 7, 2, 5, 4, 7, 3, 6]
Вывод
36
Пояснение
Линии на позициях 1 и 7 высотой 7 и 6 находятся на расстоянии 6 друг от друга и вмещают 6 × 6 = 36. Две самые высокие линии — высотой 7 на позициях 1 и 5 — вмещают только 7 × 4 = 28.
challenge icon

Дополнительный вопрос

Здесь линии между двумя вашими линиями игнорируются. Если бы каждая линия была сплошной стеной, сколько воды скопилось бы между ними? Сможешь вычислить это тоже за O(n)?

Сбросить код
def maxArea(height):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

height = [3, 7, 2, 5, 4, 7, 3, 6]

Ожидаемый вывод

36