Javascript Program for Maximum equilibrium sum in an array
Last Updated :
23 Jul, 2025
Given an array arr[]. Find the maximum value of prefix sum which is also suffix sum for index i in arr[].
Examples :
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]Native Approach:
Checks the one-by-one given condition (prefix sum equal to suffix sum) for every element and returns the element that satisfies the given condition with maximum value.
JavaScript
// Javascript program to find
// maximum equilibrium sum.
// Function to find
// maximum equilibrium sum.
function findMaxSum(arr, n) {
let res = -1000000000;
for (let i = 0; i < n; i++) {
let prefix_sum = arr[i];
for (let j = 0; j < i; j++)
prefix_sum += arr[j];
let suffix_sum = arr[i];
for (let j = n - 1; j > i; j--)
suffix_sum += arr[j];
if (prefix_sum == suffix_sum)
res = Math.max(res, prefix_sum);
}
return res;
}
// Driver Code
let arr = [-2, 5, 3, 1,
2, 6, -4, 2];
let n = arr.length;
console.log(findMaxSum(arr, n));
Complexity Analysis:
- Time Complexity: O(n2)
- Auxiliary Space: O(n)
Better Approach:
Traverse the array and store prefix sum for each index in array presum[], in which presum[i] stores sum of subarray arr[0..i]. Do another traversal of the array and store suffix sum in another array suffsum[], in which suffsum[i] stores sum of subarray arr[i..n-1]. After this for each index check if presum[i] is equal to suffsum[i] and if they are equal then compare their value with the overall maximum so far.
JavaScript
// Javascript program to find
// maximum equilibrium sum.
// Function to find maximum
// equilibrium sum.
function findMaxSum(arr, n) {
// Array to store prefix sum.
let preSum = new Array(n);
preSum.fill(0);
// Array to store suffix sum.
let suffSum = new Array(n);
suffSum.fill(0);
// Variable to store maximum sum.
let ans = Number.MIN_VALUE;
// Calculate prefix sum.
preSum[0] = arr[0];
for (let i = 1; i < n; i++)
preSum[i] = preSum[i - 1] + arr[i];
// Calculate suffix sum and compare
// it with prefix sum. Update ans
// accordingly.
suffSum[n - 1] = arr[n - 1];
if (preSum[n - 1] == suffSum[n - 1])
ans = Math.max(ans, preSum[n - 1]);
for (let i = n - 2; i >= 0; i--) {
suffSum[i] = suffSum[i + 1] + arr[i];
if (suffSum[i] == preSum[i])
ans = Math.max(ans, preSum[i]);
}
return ans;
}
// Driver code
let arr = [-2, 5, 3, 1, 2, 6, -4, 2];
let n = arr.length;
console.log(findMaxSum(arr, n));
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(n)
Further Optimization :
We can avoid the use of extra space by first computing the total sum, then using it to find the current prefix and suffix sums.
JavaScript
// javascript program to find
// maximum equilibrium sum.
// Function to find
// maximum equilibrium sum.
function findMaxSum(arr, n) {
let sum = 0;
for (let i = 0; i < n; i++) {
sum = sum + arr[i];
}
let prefix_sum = 0, res = Number.MIN_VALUE;
for (let i = 0; i < n; i++) {
prefix_sum += arr[i];
if (prefix_sum == sum)
res = Math.max(res, prefix_sum);
sum -= arr[i];
}
return res;
}
// Driver Code
let arr = [-2, 5, 3, 1, 2, 6, -4, 2];
let n = arr.length;
console.log(findMaxSum(arr, n));
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(1)
Please refer complete article on Maximum equilibrium sum in an array for more details!
Explore
JavaScript Basics
Array & String
Function & Object
OOP
Asynchronous JavaScript
Exception Handling
DOM
Advanced Topics