Java Program for Number of pairs with maximum sum
Last Updated :
19 Oct, 2023
Write a java program for a given 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<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
Java 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:
Java
// Java program to count pairs
// with maximum sum.
class GFG {
// function to find the number of
// maximum pair sums
static int sum(int a[], int n)
{
// traverse through all the pairs
int maxSum = Integer.MIN_VALUE;
for (int i = 0; i < n; i++)
for (int 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
int c = 0;
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
if (a[i] + a[j] == maxSum)
c++;
return c;
}
// driver program to test the above function
public static void main(String[] args)
{
int array[] = { 1, 1, 1, 2, 2, 2 };
int n = array.length;
System.out.println(sum(array, n));
}
}
// This code is contributed by Prerna Saini
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:
Java
// Java program to count pairs
// with maximum sum.
import java.io.*;
class GFG {
// function to find the number
// of maximum pair sums
static int sum(int a[], int n)
{
// Find maximum and second maximum
// elements. Also find their counts.
int maxVal = a[0], maxCount = 1;
int secondMax = Integer.MIN_VALUE,
secondMaxCount = 0;
for (int 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 program
public static void main(String[] args)
{
int array[] = { 1, 1, 1, 2, 2, 2, 3 };
int n = array.length;
System.out.println(sum(array, n));
}
}
// This code is contributed by Prerna Saini
Time complexity: O(n)
Auxiliary Space: O(1)
Please refer complete article on Number of pairs with maximum sum for more details!
Similar Reads
Maximum and minimum sum of Bitwise XOR of pairs from an array Given an array arr[] of size N, the task is to find the maximum and minimum sum of Bitwise XOR of all pairs from an array by splitting the array into N / 2 pairs. Examples: Input: arr[] = {1, 2, 3, 4}Output: 6 10Explanation:Bitwise XOR of the all possible pair splits are as follows:(1, 2), (3, 4) â
11 min read
Java Program for Count pairs with given sum Given an array of integers, and a number 'sum', find the number of pairs of integers in the array whose sum is equal to 'sum'. Examples: Input : arr[] = {1, 5, 7, -1}, sum = 6 Output : 2 Pairs with sum 6 are (1, 5) and (7, -1) Input : arr[] = {1, 5, 7, -1, 5}, sum = 6 Output : 3 Pairs with sum 6 are
4 min read
Java Program for Pairs such that one is a power multiple of other We are given an array A[] of n-elements and a positive integer k(other than 1). Now you have find the number of pairs Ai, Aj such that Ai = Aj*(kx) where x is an integer. Given that (k?1). Note: (Ai, Aj) and (Aj, Ai) must be count once. Examples: Input : A[] = {3, 6, 4, 2}, k = 2 Output : 2 Explanat
6 min read
Java 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 : ar
3 min read
Java Program to Find k pairs with smallest sums in two arrays Given two integer arrays arr1[] and arr2[] sorted in ascending order and an integer k. Find k pairs with smallest sums such that one element of a pair belongs to arr1[] and other element belongs to arr2[]Examples: Input : arr1[] = {1, 7, 11} arr2[] = {2, 4, 6} k = 3 Output : [1, 2], [1, 4], [1, 6] E
3 min read
Python Program for Number of pairs with maximum sum Write a python program for a given 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: 3Explanation: The maximum possible pair sum where i<j is 4, which is given by 3 pairs, so the answer is 3 the
3 min read