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, а крайняя пара вмещает 3 × 7 = 21.

lock icon+15 скрытых тестов при отправке

challenge icon

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

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

Сбросить код
def maxArea(height):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

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

Ожидается

36