Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Javascript Program for Number of pairs with maximum sum

  • Last Updated : 13 Jan, 2022

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
Recommended Articles
Page :

Start Your Coding Journey Now!