📜  数组中最大平衡和的 PHP 程序

📅  最后修改于: 2022-05-13 01:54:11.600000             🧑  作者: Mango

数组中最大平衡和的 PHP 程序

给定一个数组 arr[]。找到前缀和的最大值,它也是 arr[] 中索引 i 的后缀和。

例子 :

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]

一个简单的解决方案是逐一检查每个元素的给定条件(前缀和等于后缀和),并返回满足给定条件的最大值的元素。

PHP
 $i; $j--)
        $suffix_sum += $arr[$j];
 
    if ($prefix_sum == $suffix_sum)
        $res = max($res, $prefix_sum);
    }
    return $res;
}
 
// Driver Code
$arr = array(-2, 5, 3, 1,
              2, 6, -4, 2 );
$n = count($arr);
echo findMaxSum($arr, $n);
 
// This code is contributed by anuj_67.
?>


输出 :
7

时间复杂度: O(n 2 )
辅助空间: O(n)

更好的方法是遍历数组并将每个索引的前缀和存储在数组presum[]中,其中presum[i]存储子数组arr[0..i]的和。再次遍历数组并将后缀和存储在另一个数组 suffsum[] 中,其中 suffsum[i] 存储子数组 arr[i..n-1] 的和。在此之后为每个索引检查 presum[i] 是否等于 suffsum[i] 并且如果它们相等,则将它们的值与迄今为止的总体最大值进行比较。

输出:
7

时间复杂度: O(n)
辅助空间: O(n)

有关更多详细信息,请参阅有关数组中最大平衡和的完整文章!