Алгоритмы массива максимальной суммы JavaScript: алгоритм Кадане и динамическое программирование

В JavaScript существует несколько методов нахождения максимальной суммы массива. Вот несколько часто используемых алгоритмов:

  1. Метод грубой силы:

    • Этот метод предполагает проверку всех возможных подмассивов и поиск подмассива с максимальной суммой. Его временная сложность равна O(n^2).
  2. Алгоритм Кадане:

    • Алгоритм Кадане — это эффективный алгоритм, который сканирует массив и отслеживает подмассив с максимальной суммой, обнаруженный на данный момент. Его временная сложность равна O(n).
  3. Динамическое программирование:

    • Используя динамическое программирование, вы можете решить эту проблему, разбив ее на более мелкие подзадачи и выстроив решение. Этот алгоритм также имеет временную сложность O(n).

Вот пример реализации алгоритма Кадане на JavaScript:

function maxSubarraySum(arr) {
  let maxSum = arr[0];
  let currentSum = arr[0];

  for (let i = 1; i < arr.length; i++) {
    currentSum = Math.max(arr[i], currentSum + arr[i]);
    maxSum = Math.max(maxSum, currentSum);
  }

  return maxSum;
}
const array = [1, -3, 2, 1, -1];
const maxSum = maxSubarraySum(array);
console.log(maxSum); // Output: 3