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
Maximum equilibrium sum in an array 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 : 4Explanation : Prefix sum of arr[0..3] = Suffix sum of arr[3..6]Input : arr[] = {-3, 5, 3, 1, 2, 6, -4, 2}Output : 7Explanation : Prefix
11 min read
Javascript Program for Equilibrium index of an array Write a function int equilibrium(int[] arr, int n); that given a sequence arr[] of size n, returns an equilibrium index (if any) or -1 if no equilibrium indexes exist. The equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to the sum of elements at high
5 min read
PHP program to find the maximum and the minimum in array Finding the maximum and minimum in an array involves determining the largest and smallest values within a given set of numbers. This task is crucial for analyzing data, identifying trends, or filtering outliers. Various methods, from simple traversal to optimized algorithms, can achieve this.Example
7 min read
PHP Program to Find the Maximum Element in a Matrix Given a matrix, the task is to find the maximum element of the matrix (arrays of arrays) in PHP. Finding the maximum element in a matrix is a common task that involves iterating through all the elements of the matrix and keeping track of the largest value found. Example: Input: matrix = [ [1, 2, 3],
4 min read
Find the Most Frequent Element in an Array in PHP Given an array, i.e. $arr, the task is to find the most frequent element in an array. There are multiple ways to solve this problem in PHP we will be going to discuss them. These problems can be used during data analysis, Web Analytics, or highly used in fraud detection. Example: Input: $array = [1,
2 min read
Maximum subarray sum with same first and last element formed by removing elements Given an array arr[] of N integers, the task is to find the maximum sum of subarray having length an at least 2 whose first and last elements are the same after removing any number of array elements. If there exists no such array, then print 0. Examples: Input: arr[] = {-1, -3, -2, 4, -1, 3}Output:
6 min read