Find Sum of pair from two arrays with maximum sum

• Difficulty Level : Easy
• Last Updated : 21 May, 2021

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++

 `// C++ program to find maximum sum``// pair from two arrays` `#include ``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;``}`

Java

 `//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));` `    ``}` `}`

Python3

 `# 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`

C#

 `// 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*/`

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``?>`

Javascript

 ``

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