Наибольшая сумма подряд идущих элементов массива

Используйте алгоритм Кадане с разрешённым пустым подмассивом: текущую сумму обнуляйте, если она стала отрицательной. Максимум начинайте с нуля.

Короткий ответ

Что ответить на собеседовании

Используйте алгоритм Кадане с разрешённым пустым подмассивом: текущую сумму обнуляйте, если она стала отрицательной. Максимум начинайте с нуля.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо определить непрерывный подмассив в заданном массиве чисел, у которого сумма элементов достигает максимального значения, и вернуть эту сумму. Если все элементы массива отрицательные, следует вернуть 0.

Ответ

Используйте алгоритм Кадане с разрешённым пустым подмассивом: текущую сумму обнуляйте, если она стала отрицательной. Максимум начинайте с нуля.

function maxSubarraySum(numbers) {
  let current = 0, best = 0;
  for (const value of numbers) {
    current = Math.max(0, current + value);
    best = Math.max(best, current);
  }
  return best;
}

Для [-2,3,-1,4,-6] ответ 6: участок [3,-1,4]. Для всех отрицательных чисел и пустого массива результат 0, как требует условие. Нельзя просто сложить положительные элементы: подмассив должен быть непрерывным. Время O(n), дополнительная память O(1).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее