Menu
CoddyTech

Maximum Subarray

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

Функция

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

Ограничения

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

Примеры

Ввод
nums = [2, -4, 3, -1, 5, -6, 1]
Вывод
7
Пояснение
Сумма последовательности [3, -1, 5] равна 7. Если растянуть её влево, добавятся -4, а затем 2; чистый убыток составит 2. Если растянуть её вправо, добавятся -6, а затем 1; чистый убыток составит 5. Ни одна другая последовательность не даёт лучшего результата.
challenge icon

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

Можно ли также решить эту задачу методом «разделяй и властвуй» за O(n log n), разделив список пополам и обработав серии, пересекающие середину?

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

Тест #1

Тест #2

Аргумент

nums = [2, -4, 3, -1, 5, -6, 1]

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

7