Add solution to biggest container

This commit is contained in:
t0xa 2026-02-04 21:10:40 +03:00
parent 6ee4e10ec9
commit e478221c98

View file

@ -0,0 +1,57 @@
"""
Дан массив целых чисел nums, nums[i] высота линии. Нужно найти максимальную площадь, которую может заполнить вода между двумя линиями.
ВАЖНО: площадь воды считается как min(nums[i], nums[j]) * (j - i), где i индекс первой линии, а j - номер второй.
Пример 1:
Ввод: nums = [1,8,6,2,5,4,8,3,7]
Вывод: 49
Объяснение: 7 * (8 - 1) = 49, "1" - индекс первой линии, "8" - второй
Пример 2:
Ввод: nums = [2,3,4,5]
Вывод: 6
Ограничения:
len(nums) >= 2
i j
2,3,4,5
0 1 2 3
cur_max = 2 * 3 = 6
1: двигаем i
i j
2,3,4,5
0 1 2 3
cur_max = 3 * 2 = 6
1: двигаем i
i j
2,3,4,5
0 1 2 3
cur_max = 4 * 1 = 4
"""
def solve(nums):
max = 0
i = 0
j = len(nums) - 1
while i < j:
cur_max = min(nums[i], nums[j]) * (j - i)
if cur_max > max:
max = cur_max
if nums[i] <= nums[j]:
i += 1
else:
j -= 1
return max
print(f"exp 49, got: {solve([1,8,6,2,5,4,8,3,7])}")
print(f"exp 6, got: {solve([2,3,4,5])}")