PHP Program for Maximum Equilibrium Sum in an Array
Last Updated :
22 Jul, 2024
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]
A Simple Solution is to check one by one of the given condition (prefix sum equal to suffix sum) for every element and returns the element that satisfies the given condition with maximum value.
PHP
<?php
// PHP program to find
// maximum equilibrium sum.
// Function to find
// maximum equilibrium sum.
function findMaxSum($arr, $n) {
$res = PHP_INT_MIN;
for ($i = 0; $i < $n; $i++) {
$prefix_sum = $arr[$i];
for ($j = 0; $j < $i; $j++) {
$prefix_sum += $arr[$j];
}
$suffix_sum = $arr[$i];
for ($j = $n - 1; $j > $i; $j--) {
$suffix_sum += $arr[$j];
}
if ($prefix_sum == $suffix_sum) {
$res = max($res, $prefix_sum);
}
}
return $res;
}
// Driver Code
$arr = [-2, 5, 3, 1, 2, 6, -4, 2];
$n = count($arr);
echo findMaxSum($arr, $n);
?>
Time Complexity: O(n2)
Auxiliary Space: O(n)
A Better Approach is to 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.
PHP
<?php
// PHP program to find maximum equilibrium sum
// Function to find maximum equilibrium sum.
function findMaxSum($arr, $n) {
// Array to store prefix sum.
$preSum[$n] = [];
// Array to store suffix sum.
$suffSum[$n] = [];
// Variable to store maximum sum.
$ans = PHP_INT_MIN;
// Calculate prefix sum.
$preSum[0] = $arr[0];
for ($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 = max($ans, $preSum[$n - 1]);
}
for ($i = $n - 2; $i >= 0; $i--) {
$suffSum[$i] = $suffSum[$i + 1] + $arr[$i];
if ($suffSum[$i] == $preSum[$i]) {
$ans = max($ans, $preSum[$i]);
}
}
return $ans;
}
// Driver Code
$arr = [-2, 5, 3, 1, 2, 6, -4, 2];
$n = sizeof($arr);
echo findMaxSum($arr, $n);
?>
Time Complexity: O(n)
Auxiliary Space: O(n)
Please refer complete article on Maximum equilibrium sum in an array for more details!
Similar Reads
PHP Program for Number of local extrema in an array You are given an array on n-elements. An extrema is an element that is either greater than its both of neighbors or less than its both neighbors. You have to calculate the number of local extrema in given array. Note: 1st and last elements are not extrema.Examples : Input : a[] = {1, 5, 2, 5}Output
2 min read
PHP Program for Maximum Circular Subarray Sum Given n numbers (both +ve and -ve), arranged in a circle, find the maximum sum of consecutive numbers. Examples: Input: Arr = [ 8, -8, 9, -9, 10, -11, 12 ] Output: 22 (12 + 8 - 8 + 9 - 9 + 10) Input: Arr = [ 10, -3, -4, 7, 6, 5, -4, -1 ] Output: 23 (7 + 6 + 5 - 4 -1 + 10) Input: Arr = [ -1, 40, -14,
3 min read
PHP Program for Minimum Product Subset of an Array Given an array Arr, we have to find the minimum product possible with the subset of elements present in the array. The minimum product can be a single element also.Examples: Input : Arr = [ -1, -1, -2, 4, 3 ] Output : -24 Explanation : Minimum product will be ( -2 * -1 * -1 * 4 * 3 ) = -24 Input : A
3 min read
PHP Program for Maximum and Minimum in a Square Matrix Given a square matrix of order n*n, find the maximum and minimum from the matrix given. Examples: Input : Arr = [ [ 5, 4, 9 ], [ 2, 0, 6 ], [ 3, 1, 8 ] ]; Output : Maximum = 9, Minimum = 0 Input : Arr = [[ -5, 3 ], [ 2, 4 ]]; Output : Maximum = 4, Minimum = -5Naive MethodWe find the maximum and mini
2 min read
PHP Program for Maximum sum of i*arr[i] among all rotations of a given array Given an array arr[] of n integers, find the maximum that maximizes the sum of the value of i*arr[i] where i varies from 0 to n-1.Examples: Input: arr[] = {8, 3, 1, 2} Output: 29 Explanation: Lets look at all the rotations, {8, 3, 1, 2} = 8*0 + 3*1 + 1*2 + 2*3 = 11 {3, 1, 2, 8} = 3*0 + 1*1 + 2*2 + 8
7 min read