Вам дан целочисленный массив height длины n . Нарисовано n вертикальных линий так, что две конечные точки i -й линии находятся в координатах (i, 0) и (i, height[i]) .
Найдите две линии, которые вместе с осью x образуют контейнер такой, что контейнер содержит наибольшее количество воды.
Верните максимальное количество воды, которое может хранить контейнер.
Обратите внимание, что вы не можете наклонять контейнер.
Примеры
Пример 1
Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Пояснение
Максимальная площадь воды, которую может вместить контейнер, равна 49.
Пример 2
Input: height = [1,1]
Output: 1
Решение
Решение
/** * Временная сложность: O(N) * Мы проходим по массиву указателями навстречу друг другу ровно один раз. * Каждый элемент посещается максимум один раз. * * Пространственная сложность: O(1) * Используем только несколько переменных (start, end, maxVolume) для хранения состояния. */var maxArea = function(height) { let start = 0; let end = height.length - 1; let maxVolume = 0; // Можно инициализировать нулем, так как высота >= 0 while (start < end) { const leftHeight = height[start]; const rightHeight = height[end]; // Площадь = Высота (ограничена минимумом) * Ширина (разница индексов) const volume = Math.min(leftHeight, rightHeight) * (end - start); maxVolume = Math.max(maxVolume, volume); // Жадный подход: двигаем ту стенку, которая меньше, // в надежде найти более высокую и увеличить площадь. if (leftHeight <= rightHeight) { start++; } else { end--; } } return maxVolume;};