Find Sum of pair from two arrays with maximum sum

Given two arrays of positive and distinct integers. The task is to find a pair from the two arrays with maximum sum.

Note: The pair should contain one element from both the arrays.

Examples:

Input : arr1[] = {1, 2, 3},  arr2[] = {4, 5, 6}
Output : Max Sum = 9
Pair (3, 6) has the maximum sum.

Input : arr1[] = {10, 2, 3},  arr2[] = {3, 4, 7}
Output : Max Sum = 17

Naive Approach: A simple approach is two run two nested loops to generate all possible pairs and find the pair with maximum sum.

Time Complexity: O(N*M), where N is the length of first array and M is the length of second array.

Efficient Approach: An efficient approach is to observe that the elements which are maximum in the respective arrays will contribute to the maximum sum pair. So, the task reduces to find maximum elements from both the arrays and print their sum.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find maximum sum
// pair from two arrays
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to find maximum sum
// pair from two arrays
int maxSumPair(int arr1[], int n1, int arr2[], int n2)
{
    int max1 = INT_MIN; // max from 1st array
    int max2 = INT_MIN; // max from 2nd array
  
    // Find max from 1st array
    for (int i = 0; i < n1; i++) {
        if (arr1[i] > max1)
            max1 = arr1[i];
    }
  
    // Find max from 2nd array
    for (int i = 0; i < n2; i++) {
        if (arr2[i] > max2)
            max2 = arr2[i];
    }
  
    // Return sum of max from both arrays
    return max1 + max2;
}
  
// Driver Code
int main()
{
  
    int arr1[] = { 10, 2, 3 };
  
    int arr2[] = { 3, 4, 7 };
  
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
  
    int n2 = sizeof(arr2) / sizeof(arr2[0]);
  
    cout << maxSumPair(arr1, n1, arr2, n2);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

//Java program to find maximum sum
//pair from two arrays
public class AAB {
  
    //Function to find maximum sum
    //pair from two arrays
    static int maxSumPair(int arr1[], int n1, int arr2[], int n2)
    {
     int max1 = Integer.MIN_VALUE; // max from 1st array
     int max2 = Integer.MIN_VALUE; // max from 2nd array
  
     // Find max from 1st array
     for (int i = 0; i < n1; i++) {
         if (arr1[i] > max1)
             max1 = arr1[i];
     }
  
     // Find max from 2nd array
     for (int i = 0; i < n2; i++) {
         if (arr2[i] > max2)
             max2 = arr2[i];
     }
  
     // Return sum of max from both arrays
     return max1 + max2;
    }
  
    //Driver Code
    public static void main(String[] args) {
          
        int arr1[] = { 10, 2, 3 };
  
         int arr2[] = { 3, 4, 7 };
  
         int n1 = arr1.length;
  
         int n2 = arr2.length;
  
         System.out.println(maxSumPair(arr1, n1, arr2, n2));
  
    }
  
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find maximum 
# sum pair from two arrays 
import sys
  
# Function to find maximum sum 
# pair from two arrays 
def maxSumPair(arr1, n1, arr2, n2): 
  
    max1 = -sys.maxsize -1 # max from 1st array 
    max2 = -sys.maxsize -1 # max from 2nd array 
  
    # Find max from 1st array 
    for i in range(0, n1): 
        if (arr1[i] > max1): 
            max1 = arr1[i]
      
    # Find max from 2nd array 
    for i in range(0, n2): 
        if (arr2[i] > max2): 
            max2 = arr2[i]
      
    # Return sum of max from 
    # both arrays 
    return max1 + max2 
  
# Driver Code 
arr1 = [ 10, 2, 3
  
arr2 = [ 3, 4, 7
  
n1 = len(arr1) 
  
n2 = len(arr2)
  
print(maxSumPair(arr1, n1, arr2, n2)) 
  
# This code is contributed 
# by Yatin Gupta

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find maximum sum
//pair from two arrays
using System; 
  
public class AAB {
   
    //Function to find maximum sum
    //pair from two arrays
    static int maxSumPair(int []arr1, int n1, int []arr2, int n2)
    {
     int max1 = int.MinValue; // max from 1st array
     int max2 = int.MinValue; // max from 2nd array
   
     // Find max from 1st array
     for (int i = 0; i < n1; i++) {
         if (arr1[i] > max1)
             max1 = arr1[i];
     }
   
     // Find max from 2nd array
     for (int i = 0; i < n2; i++) {
         if (arr2[i] > max2)
             max2 = arr2[i];
     }
   
     // Return sum of max from both arrays
     return max1 + max2;
    }
   
    //Driver Code
    public static void Main() {
           
        int []arr1 = { 10, 2, 3 };
   
         int []arr2 = { 3, 4, 7 };
   
         int n1 = arr1.Length;
   
         int n2 = arr2.Length;
   
         Console.Write(maxSumPair(arr1, n1, arr2, n2));
   
    }
   
}
  
/*This code is contributed by 29AjayKumar*/

chevron_right


PHP

$max1)
$max1 = $arr1[$i];
}

// Find max from 2nd array
for ($i = 0; $i < $n2; $i++) { if ($arr2[$i] > $max2)
$max2 = $arr2[$i];
}

// Return sum of max from both arrays
return $max1 + $max2;
}

// Driver Code
$arr1 = array( 10, 2, 3 );

$arr2 = array( 3, 4, 7 );

$n1 = count($arr1);

$n2 = count($arr2);

echo maxSumPair($arr1, $n1, $arr2, $n2);

// This code is contributed by Rajput-Ji
?>

Output:

17

Time Complexity: O(N + M), where N is the length of first array and M is the length of the second array.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.