Menu
CoddyTech

Maximum Product Subarray

Перемножьте элементы подмассива nums и верните наибольшее произведение, которое может дать любой подмассив. Подмассив состоит из последовательных элементов без пропусков и никогда не бывает пустым, поэтому даже для массива из отрицательных чисел есть ответ. Допускаются нули и отрицательные значения.

Функция

maxProduct(nums: integer-array) → integer
numsinteger-array
целые числа для умножения, каждое в диапазоне от -10 до 10
Возвращаетinteger
наибольшее произведение непустого подмассива

Ограничения

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • Произведение каждого подмассива помещается в 32-разрядное целое число со знаком.

Примеры

Ввод
nums = [2, -5, 3, -2, 0, 4]
Вывод
60
Пояснение
Два отрицательных числа взаимно уничтожаются: 2 × -5 × 3 × -2 = 60. 0 делит массив на две части, и 4 с другой стороны не может превзойти 60.
challenge icon

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

Как также определить, где начинается и заканчивается наилучший подмассив, по-прежнему за время O(n) и с использованием O(1) памяти?

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

Тест #1

Тест #2

Тест #3

Аргумент

nums = [2, -5, 3, -2, 0, 4]

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

60