Find Sum of pair from two arrays with maximum sum - GeeksforGeeks

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++
Java
Python3
C#
PHP
Javascript
// 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 arraysint 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 Codeint 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 program to find maximum sum//pair from two arrayspublic 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 program to find maximum# sum pair from two arraysimport sys # Function to find maximum sum# pair from two arraysdef 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 Codearr1 = [ 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# program to find maximum sum//pair from two arraysusing 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// PHP program to find maximum sum// pair from two arrays // Function to find maximum sum// pair from two arraysfunction maxSumPair($arr1, $n1, $arr2, $n2){    $max1 = -1; // max from 1st array    $max2 = -1; // max from 2nd array     // Find max from 1st array    for ($i = 0; $i < $n1; $i++)    {        if ($arr1[$i] > $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?>
<script> // Javascript program to find maximum sum// pair from two arrays         // Function to find maximum sum    // pair from two arrays    function maxSumPair(arr1,n1,arr2,n2)    {        // max from 1st array        let max1 = Number.MIN_VALUE;        // max from 2nd array        let max2 = Number.MIN_VALUE;        // Find max from 1st array     for (let i = 0; i < n1; i++) {         if (arr1[i] > max1)             max1 = arr1[i];     }        // Find max from 2nd array     for (let i = 0; i < n2; i++) {         if (arr2[i] > max2)             max2 = arr2[i];     }        // Return sum of max from both arrays     return max1 + max2;    }         // Driver Code         let arr1=[10, 2, 3 ];    let arr2=[3, 4, 7 ];    let n1 = arr1.length;    let n2 = arr2.length;    document.write(maxSumPair(arr1, n1, arr2, n2));      // This code is contributed by rag2127 </script>
17
 
Time Complexity: O(N + M), where N is the length of first array and M is the length of the second array. 
YatinGupta
ukasp
29AjayKumar
Rajput-Ji
rag2127
Constructive Algorithms
Sorting Quiz
Technical Scripter 2018
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Window Sliding Technique
Building Heap from Array
Trapping Rain Water
Reversal algorithm for array rotation
Program to find sum of elements in a given array
Find duplicates in O(n) time and O(1) extra space | Set 1
Move all negative numbers to beginning and positive to end with constant extra space
Count pairs with given sum
Next Greater Element
Sliding Window Maximum (Maximum of all subarrays of size k)