Программа Javascript для максимальной равновесной суммы в массиве

Опубликовано: 2 Сентября, 2022

Дан массив arr[]. Найдите максимальное значение суммы префиксов, которая также является суммой суффиксов для индекса i в arr[].

Примеры :

Input : arr[] = {-1, 2, 3, 0, 3, 2, -1}
Output : 4
Prefix sum of arr[0..3] = 
            Suffix sum of arr[3..6]

Input : arr[] = {-2, 5, 3, 1, 2, 6, -4, 2}
Output : 7
Prefix sum of arr[0..3] = 
              Suffix sum of arr[3..7]

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

Временная сложность: O(n 2 )
Вспомогательное пространство: O(n)

Лучшим подходом является обход массива и сохранение суммы префиксов для каждого индекса в массиве presum[], в котором presum[i] хранит сумму подмассива arr[0..i]. Сделайте еще один обход массива и сохраните сумму суффиксов в другом массиве suffsum[], в котором suffsum[i] хранит сумму подмассива arr[i..n-1]. После этого для каждого индекса проверьте, равно ли presum[i] suffsum[i], и если они равны, то сравните их значение с общим максимумом на данный момент.

Временная сложность: O(n)
Вспомогательное пространство: O(n)

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

Временная сложность: O(n)
Вспомогательное пространство: O(1)

Пожалуйста, обратитесь к полной статье о максимальной равновесной сумме в массиве для получения более подробной информации!