Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Javascript Program for Number of pairs with maximum sum

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an array arr[], count 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

Method 1 (Naive) 
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

Javascript




<script>
  
// JavaScript program to count pairs
// with maximum sum.
  
// Function to find the number of
// maximum pair sums
function sum(a, n)
{
      
    // traverse through all the pairs
    let maxSum = Number.MIN_VALUE;
    for(let i = 0; i < n; i++)
        for(let j = i + 1; j < n; j++)
            maxSum = Math.max(maxSum,
                              a[i] + a[j]);
    
    // Traverse through all pairs and
    // keep a count of the number of
    // maximum pairs
    let c = 0;
    for(let i = 0; i < n; i++)
        for(let j = i + 1; j < n; j++)
            if (a[i] + a[j] == maxSum)
                c++;
    return c;
}
  
// Driver Code
let array = [ 1, 1, 1, 2, 2, 2 ];
let n = array.length;
  
document.write(sum(array, n));
  
// This code is contributed by code_hunt   
  
</script>

Output : 

3

Time complexity:O(n^2)

Method 2 (Efficient) 
If we take a closer look, we can notice following facts. 

  1. Maximum element is always part of solution
  2. If maximum element appears more than once, then result is maxCount * (maxCount - 1)/2. We basically need to choose 2 elements from maxCount (maxCountC2).
  3. 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

Javascript




<script>
    // Javascript 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.
        let maxVal = a[0], maxCount = 1;
        let secondMax = Number.MIN_VALUE;
        let secondMaxCount = 0;
        for (let 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 * parseInt((maxCount - 1) / 2, 10);
       
        // If maximum element appears
        // only once.
        return secondMaxCount;
    }
      
    let array = [ 1, 1, 1, 2, 2, 2, 3 ];
    let n = array.length;
  
    document.write(sum(array, n));
      
    // This code is contributed by divyesh072019.
</script>

Output : 
 

3

Time complexity:O(n)
 

Please refer complete article on Number of pairs with maximum sum for more details!


My Personal Notes arrow_drop_up
Last Updated : 13 Jan, 2022
Like Article
Save Article
Similar Reads
Related Tutorials