Wednesday, July 3, 2024
HomeLanguagesPhpPhp Program for Maximum difference between groups of size two

Php Program for Maximum difference between groups of size two

Given an array of even number of elements, form groups of 2 using these array elements such that the difference between the group with highest sum and the one with lowest sum is maximum.
Note: An element can be a part of one group only and it has to be a part of at least 1 group. 
Examples: 
 

Input : arr[] = {1, 4, 9, 6}
Output : 10
Groups formed will be (1, 4) and (6, 9), 
the difference between highest sum group
(6, 9) i.e 15 and lowest sum group (1, 4)
i.e 5 is 10.


Input : arr[] = {6, 7, 1, 11}
Output : 11
Groups formed will be (1, 6) and (7, 11), 
the difference between highest sum group
(7, 11) i.e 18 and lowest sum group (1, 6)
i.e 7 is 11.

 

Simple Approach: We can solve this problem by making all possible combinations and checking each set of combination differences between the group with the highest sum and with the lowest sum. A total of n*(n-1)/2 such groups would be formed (nC2). 
Time Complexity: O(n^3), because it will take O(n^2) to generate groups and to check against each group n iterations will be needed thus overall it takes O(n^3) time.
Efficient Approach: We can use the greedy approach. Sort the whole array and our result is sum of last two elements minus sum of first two elements.
 

PHP




<?php
// PHP program to find minimum
// difference between groups of
// highest and lowest sums.
function CalculateMax($arr, $n)
{
    // Sorting the whole array.
    sort($arr);
     
    $min_sum = $arr[0] +
               $arr[1];
    $max_sum = $arr[$n - 1] +
               $arr[$n - 2];
 
    return abs($max_sum -
               $min_sum);
}
 
// Driver code
$arr = array (6, 7, 1, 11 );
$n = sizeof($arr);
echo CalculateMax($arr, $n), "
" ;
 
// This code is contributed by ajit
?>


Output:  

11

Time Complexity: O (n * log n)

Space Complexity: O(1) as no extra space has been taken.

Further Optimization : 
Instead of sorting, we can find a maximum two and minimum of two in linear time and reduce the time complexity to O(n). 
 

Below is the code for the above approach.

PHP




<?php
    // Php program to
    // find minimum difference
    // between groups of highest and lowest
    // sums.
     
    function CalculateMax($arr, $n)
    {
    $first_min = min($arr);
    $second_min = PHP_INT_MAX;
    for($i = 0; $i < $n ; $i ++)
    {
        // If arr[i] is not equal to first min
        if ($arr[$i] != $first_min)
            $second_min = min($arr[$i],$second_min);
    }
     
    $first_max = max($arr);
    $second_max = PHP_INT_MIN;
    for($i = 0; $i < $n ; $i ++)
    {
        // If arr[i] is not equal to first max
        if ($arr[$i] != $first_max)
            $second_max = max($arr[$i],$second_max);
    }
     
    return abs($first_max+$second_max-$first_min-$second_min);
    }
     
    $arr = array(6, 7, 1, 11);
    $n = sizeof($arr);
    echo CalculateMax($arr, $n);
 
// This code is contributed by Aman Kumar
?>


Output

11

Time Complexity: O(N)
Auxiliary Space: O(1)

Please refer complete article on Maximum difference between groups of size two for more details!

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nicole Veronica Rubhabha
Nicole Veronica Rubhabha
A highly competent and organized individual DotNet developer with a track record of architecting and developing web client-server applications. Recognized as a personable, dedicated performer who demonstrates innovation, communication, and teamwork to ensure quality and timely project completion. Expertise in C#, ASP.Net, MVC, LINQ, EF 6, Web Services, SQL Server, MySql, Web development,
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments