Find the largest pair sum in an unsorted array - GeeksforGeeks

12 Aug, 2021
Given an unsorted of distinct integers, find the largest pair sum in it. For example, the largest pair sum in {12, 34, 10, 6, 40} is 74.Difficulty Level: Rookie Expected Time Complexity: O(n) [Only one traversal of an array is allowed] 
This problem mainly boils down to finding the largest and second-largest element in an array. We can find the largest and second-largest in O(n) time by traversing the array once.  
1) Initialize the 
   first = Integer.MIN_VALUE
   second =  Integer.MIN_VALUE
2) Loop through the elements
   a) If the current element is greater than the first max element, then update second max to the first 
         max and update the first max to the current element. 
3) Return (first + second)
Below is the implementation of the above algorithm:  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find largest pair sum in a given array#include <iostream>using namespace std; /* Function to return largest pair sum. Assumes that   there are at-least  two elements in arr[] */int findLargestSumPair(int arr[], int n){    // Initialize first and second largest element    int first, second;    if (arr[0] > arr[1]) {        first = arr[0];        second = arr[1];    }    else {        first = arr[1];        second = arr[0];    }     // Traverse remaining array and find first and second    // largest elements in overall array    for (int i = 2; i < n; i++) {        /* If current element is greater than first then          update both first and second */        if (arr[i] > first) {            second = first;            first = arr[i];        }         /* If arr[i] is in between first and second then         * update second  */        else if (arr[i] > second && arr[i] != first)            second = arr[i];    }    return (first + second);} /* Driver program to test above function */int main(){    int arr[] = { 12, 34, 10, 6, 40 };    int n = sizeof(arr) / sizeof(arr[0]);    cout << "Max Pair Sum is "         << findLargestSumPair(arr, n);    return 0;}
public class LargestPairSum {     public static void main(String[] args)    {        // TODO Auto-generated method stub         int arr[] = { 12, 34, 10, 6, 40};        System.out.println(largestPairSum(arr, arr.length));    }     private static int largestPairSum(int[] arr, int n)    {        int j = 0;        int max = n == 1 ? arr[0] + arr[1] : arr[0];        for (int i = 0; i < n; i++) {            int sum = arr[j] + arr[i];            if (sum > max) {                max = sum;                if (arr[j] < arr[i]) {                    j = i;                }            }        }        return max;    }}/** * This code is contributed by Tanveer Baba */
# Python3 program to find largest# pair sum in a given array # Function to return largest pair# sum. Assumes that there are# at-least two elements in arr[]  def findLargestSumPair(arr, n):     # Initialize first and second    # largest element    if arr[0] > arr[1]:        first = arr[0]        second = arr[1]     else:        first = arr[1]        second = arr[0]     # Traverse remaining array and    # find first and second largest    # elements in overall array    for i in range(2, n):         # If current element is greater        # than first then update both        # first and second        if arr[i] > first:            second = first            first = arr[i]         # If arr[i] is in between first        # and second then update second        elif arr[i] > second and arr[i] != first:            second = arr[i]     return (first + second)  # Driver program to test above function */arr = [12, 34, 10, 6, 40]n = len(arr)print("Max Pair Sum is",      findLargestSumPair(arr, n)) # This code is contributed by Smitha Dinesh Semwal
// C# program to find largest// pair sum in a given arrayusing System; class GFG {    /* Method to return largest pair    sum. Assumes that there are    at-least two elements in arr[] */    static int findLargestSumPair(int[] arr)    {        // Initialize first and        // second largest element        int first, second;        if (arr[0] > arr[1]) {            first = arr[0];            second = arr[1];        }        else {            first = arr[1];            second = arr[0];        }         // Traverse remaining array and        // find first and second largest        // elements in overall array        for (int i = 2; i < arr.Length; i++) {            /* If current element is greater               than first then update both               first and second */            if (arr[i] > first) {                second = first;                first = arr[i];            }             /* If arr[i] is in between first               and second then update second */            else if (arr[i] > second && arr[i] != first)                second = arr[i];        }        return (first + second);    }    // Driver Code    public static void Main()    {        int[] arr1 = new int[] { 12, 34, 10, 6, 40 };        Console.Write("Max Pair Sum is "                      + findLargestSumPair(arr1));    }}
<?php// PHP program to find largest// pair sum in a given array // Function to return largest// pair sum. Assumes that// there are at-least two// elements in arr[] */function findLargestSumPair($arr, $n){         // Initialize first and    // second largest element    $first;    $second;         if ($arr[0] > $arr[1])    {        $first = $arr[0];        $second = $arr[1];    }    else    {        $first = $arr[1];        $second = $arr[0];    }     // Traverse remaining array    // and find first and second    // largest elements in overall    // array    for ( $i = 2; $i<$n; $i ++)    {                 // If current element is greater        // than first then update both        // first and second        if ($arr[$i] > $first)        {            $second = $first;            $first = $arr[$i];        }         // If arr[i] is in between first        // and second then update second        else if ($arr[$i] > $second and                 $arr[$i] != $first)            $second = $arr[$i];    }    return ($first + $second);}     // Driver Code    $arr = array(12, 34, 10, 6, 40);    $n = count($arr);    echo "Max Pair Sum is "          , findLargestSumPair($arr, $n); // This code is contributed by anuj_67.?>
<script>     // Javascript program to find largest    // pair sum in a given array         /* Method to return largest pair    sum. Assumes that there are    at-least two elements in arr[] */    function findLargestSumPair(arr)    {        // Initialize first and        // second largest element        let first, second;        if (arr[0] > arr[1])        {            first = arr[0];            second = arr[1];        }        else        {            first = arr[1];            second = arr[0];        }               // Traverse remaining array and        // find first and second largest        // elements in overall array        for (let i = 2; i < arr.length; i ++)        {            /* If current element is greater               than first then update both               first and second */            if (arr[i] > first)            {                second = first;                first = arr[i];            }                   /* If arr[i] is in between first               and second then update second */            else if (arr[i] > second &&                     arr[i] != first)                second = arr[i];        }        return (first + second);    }           let arr1 = [12, 34, 10, 6, 40];    document.write("Max Pair Sum is " + findLargestSumPair(arr1));         // This code is contributed by divyeshrabadiy07.</script>
Max Pair Sum is 74
The time complexity of the above solution is O(n).The space complexity of the above solution is O(1).
This article is contributed by Rishabh and improved by Akshita Patel. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
nitin mittal
vt_m
divyeshrabadiya07
akshitapatel02
tanveerbaba30
lovishtater
Searching
Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program to find largest element in an array
k largest(or smallest) elements in an array
Search an element in a sorted and rotated array
Given an array of size n and a number k, find all elements that appear more than n/k times
Find the index of an array element in Java
Most frequent element in an array
Two Pointers Technique
Count number of occurrences (or frequency) in a sorted array
Best First Search (Informed Search)