Open In App

Php Program for Size of The Subarray With Maximum Sum

An array is given, find length of the subarray having maximum sum.

Examples : 



Input :  a[] = {1, -2, 1, 1, -2, 1}
Output : Length of the subarray is 2
Explanation: Subarray with consecutive elements 
and maximum sum will be {1, 1}. So length is 2

Input : ar[] = { -2, -3, 4, -1, -2, 1, 5, -3 }
Output : Length of the subarray is 5
Explanation: Subarray with consecutive elements 
and maximum sum will be {4, -1, -2, 1, 5}. 

This problem is mainly a variation of Largest Sum Contiguous Subarray Problem.
The idea is to update starting index whenever sum ending here becomes less than 0.




<?php
// Function to find the maximum contiguous subarray
// and print its starting and end index
function maxSubArraySum($a, $size) {
    $max_so_far = PHP_INT_MIN;
    $max_ending_here = 0;
    $start = 0;
    $end = 0;
    $s = 0;
 
    for ($i = 0; $i < $size; $i++) {
        $max_ending_here += $a[$i];
 
        if ($max_so_far < $max_ending_here) {
            $max_so_far = $max_ending_here;
            $start = $s;
            $end = $i;
        }
 
        if ($max_ending_here < 0) {
            $max_ending_here = 0;
            $s = $i + 1;
        }
    }
 
    return ($end - $start + 1);
}
 
/*Driver program to test maxSubArraySum*/
$a = [-2, -3, 4, -1, -2, 1, 5, -3];
$n = count($a);
echo maxSubArraySum($a, $n);
?>

Output

5

Time Complexity: O(N) where N is size of the input array. This is because a for loop is executing from 1 to size of the array.
Space Complexity: O(1) as no extra space has been taken.

Please refer complete article on Size of The Subarray With Maximum Sum for more details!


Article Tags :