Write a PHP program for a given array arr[], count the number of pairs arr[i], arr[j] such that arr[i] + arr[j] is maximum and i < j.
Example:
Input : arr[] = {1, 1, 1, 2, 2, 2}
Output: 3
Explanation: The maximum possible pair sum where i<j is 4, which is given by 3 pairs, so the answer is 3 the pairs are (2, 2), (2, 2) and (2, 2)Input: arr[] = {1, 4, 3, 3, 5, 1}
Output: 1
Explanation: The pair 4, 5 yields the maximum sum i.e, 9 which is given by 1 pair only
Php Program for Number of pairs with maximum sum using Naive Approach:
Traverse a loop i from 0 to n, i.e length of the array and another loop j from i+1 to n to find all possible pairs with i<j. Find the pair with the maximum possible sum, again traverse for all pairs and keep the count of the number of pairs which gives the pair sum equal to maximum .
Below is the Implementation of the above Approach:
<?php // PHP program to count pairs // with maximum sum. // function to find the number // of maximum pair sum function sum( $a , $n )
{ // traverse through all
// the pairs
$maxSum = PHP_INT_MIN;
for ( $i = 0; $i < $n ; $i ++)
for ( $j = $i + 1; $j < $n ; $j ++)
$maxSum = max( $maxSum , $a [ $i ] + $a [ $j ]);
// traverse through all
// pairs and keep a count
// of the number of
// maximum pairs
$c = 0;
for ( $i = 0; $i < $n ; $i ++)
for ( $j = $i + 1; $j < $n ; $j ++)
if ( $a [ $i ] + $a [ $j ] == $maxSum )
$c ++;
return $c ;
} // Driver Code
$array = array (1, 1, 1, 2, 2, 2);
$n = count ( $array );
echo sum( $array , $n );
// This code is contributed by anuj_67. ?> |
3
Time complexity: O(n2)
Auxiliary Space: O(1)
Efficient Method:
- Maximum element is always part of solution.
- If maximum element appears more than once, then result is maxCount * (maxCount – 1)/2. We basically need to choose 2 elements from maxCount (maxCountC2).
- If maximum element appears once, then result is equal to count of second maximum element. We can form a pair with every second max and max.
Below is the Implementation of the above Approach:
<?php // PHP program to count // pairs with maximum sum. // function to find the number // of maximum pair sums function sum( $a , $n )
{ // Find maximum and second
// maximum elements. Also
// find their counts.
$maxVal = $a [0]; $maxCount = 1;
$secondMax = PHP_INT_MIN;
$secondMaxCount ;
for ( $i = 1; $i < $n ; $i ++)
{
if ( $a [ $i ] == $maxVal )
$maxCount ++;
else if ( $a [ $i ] > $maxVal )
{
$secondMax = $maxVal ;
$secondMaxCount = $maxCount ;
$maxVal = $a [ $i ];
$maxCount = 1;
}
else if ( $a [ $i ] == $secondMax )
{
$secondMax = $a [ $i ];
$secondMaxCount ++;
}
else if ( $a [ $i ] > $secondMax )
{
$secondMax = $a [ $i ];
$secondMaxCount = 1;
}
}
// If maximum element appears
// more than once.
if ( $maxCount > 1)
return $maxCount *
( $maxCount - 1) / 2;
// If maximum element
// appears only once.
return $secondMaxCount ;
} // Driver Code $array = array (1, 1, 1, 2,
2, 2, 3 );
$n = count ( $array );
echo sum( $array , $n );
// This code is contributed by anuj_67. ?> |
3
Time complexity: O(n)
Auxiliary Space: O(1)
Please refer complete article on Number of pairs with maximum sum for more details!