Answer

Answer

t.me/js_test

Ответ:

const getMaxSabSum = (arr) => {
  let maxSum = 0;
  let partialSum = 0;

  for (let item of arr) {
    partialSum += item;
    maxSum = Math.max(maxSum, partialSum);
    if (partialSum < 0) partialSum = 0;
  }

  return maxSum;
};

Обьяснение:

Идём по массиву и накапливаем текущую частичную сумму элементов в переменной s. Если s в какой-то момент становится отрицательной – присваиваем s=0. Максимальный из всех s и будет ответом.

Код для проверки:

const getMaxSabSum = (arr) => {
  let maxSum = 0;
  let partialSum = 0;

  for (let item of arr) {
    partialSum += item;
    maxSum = Math.max(maxSum, partialSum);
    if (partialSum < 0) partialSum = 0;
  }

  return maxSum;
};

console.log(getMaxSabSum([-2, -1, 1, 2])); // 1 + 2 = 3

console.log(getMaxSabSum([2, -1, 2, 3, -9])); // 2 + (-1) + 2 + 3 = 6

console.log(getMaxSabSum([-1, -2, -3])); // 0

Report Page