Maximum triplet sum in array

Given an array, the task is to find maximum triplet sum in the array.

Examples :

Input : arr[] = {1, 2, 3, 0, -1, 8, 10} 
Output : 21
10 + 8 + 3 = 21

Input : arr[] = {9, 8, 20, 3, 4, -1, 0}
Output : 37
20 + 9 + 8 = 37



Naive approach : In this method we simply run three loop and one by one add three element and compare with previous sum if the sum of three element is greater then store in previous sum .

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to find maximum triplet sum
#include <bits/stdc++.h>
using namespace std;
  
int maxTripletSum(int arr[], int n)
{
    // Initialize sum with INT_MIN
    int sum = INT_MIN;
  
    for (int i = 0; i < n; i++)
        for (int j = i + 1; j < n; j++)
            for (int k = j + 1; k < n; k++) 
                if (sum < arr[i] + arr[j] + arr[k]) 
                    sum = arr[i] + arr[j] + arr[k];                
    return sum;         
}
  
// Driven code
int main()
{
    int arr[] = { 1, 0, 8, 6, 4, 2 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << maxTripletSum(arr, n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to find maximum triplet sum
import java.io.*;
  
class GFG {
      
    static int maxTripletSum(int arr[], int n)
    {
        // Initialize sum with INT_MIN
        int sum = -1000000;
      
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                for (int k = j + 1; k < n; k++) 
                    if (sum < arr[i] + arr[j] + arr[k]) 
                        sum = arr[i] + arr[j] + arr[k];             
        return sum;         
    }
      
    // Driven code
    public static void main(String args[])
    {
        int arr[] = { 1, 0, 8, 6, 4, 2 };
        int n = arr.length;
        System.out.println(maxTripletSum(arr, n));
    }
}
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 code to find
# maximum triplet sum
  
def maxTripletSum(arr, n) :
  
    # Initialize sum with
    # INT_MIN
    sm = -1000000
  
    for i in range(0, n) :
        for j in range(i + 1, n) :
            for k in range(j + 1, n) :
      
                if (sm < (arr[i] + arr[j] + arr[k])) :
                    sm = arr[i] + arr[j] + arr[k]             
    return sm
      
# Driven code
arr = [ 1, 0, 8, 6, 4, 2 ]
n = len(arr)
  
print(maxTripletSum(arr, n))
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to find maximum triplet sum
using System;
  
class GFG {
  
    static int maxTripletSum(int[] arr, int n)
    {
        // Initialize sum with INT_MIN
        int sum = -1000000;
  
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                for (int k = j + 1; k < n; k++)
                    if (sum < arr[i] + arr[j] + arr[k])
                        sum = arr[i] + arr[j] + arr[k];
        return sum;
    }
  
    // Driven code
    public static void Main()
    {
        int[] arr = { 1, 0, 8, 6, 4, 2 };
        int n = arr.Length;
        Console.WriteLine(maxTripletSum(arr, n));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to find maximum triplet sum
  
function maxTripletSum( $arr, $n)
{
      
    // Initialize sum with INT_MIN
    $sum = PHP_INT_MIN;
  
    for($i = 0; $i < $n; $i++)
        for($j = $i + 1; $j < $n; $j++)
            for($k = $j + 1; $k < $n; $k++) 
                if ($sum < $arr[$i] + 
                           $arr[$j] +
                           $arr[$k])
                             
                    $sum = $arr[$i] + 
                           $arr[$j] +
                           $arr[$k];         
    return $sum;         
}
  
    // Driver Code
    $arr = array(1, 0, 8, 6, 4, 2);
    $n = count($arr);
    echo maxTripletSum($arr, $n);
  
// This code is contributed by anuj_67.
?>

chevron_right



Output :

18

Time complexity : O(n^3)
Space complexity : O(1)

Another approach : In this, we first need to sort the whole array and after that when we add last three element of the array then we find maximum sum of triplates.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to find maximum triplet sum
#include <bits/stdc++.h>
using namespace std;
  
// This function assumes that there are at least 
// three elements in arr[].
int maxTripletSum(int arr[], int n)
{
    // sort the given array
    sort(arr, arr + n);
  
    // After sorting the array. 
    // Add last three element of the given array
    return arr[n - 1] + arr[n - 2] + arr[n - 3];
}
  
// Driven code
int main()
{
    int arr[] = { 1, 0, 8, 6, 4, 2 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << maxTripletSum(arr, n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to find maximum triplet sum
import java.io.*;
import java.util.*;
  
  
class GFG {
      
    // This function assumes that there are
    // at least three elements in arr[].
    static int maxTripletSum(int arr[], int n)
    {
        // sort the given array
        Arrays.sort(arr);
      
        // After sorting the array. 
        // Add last three element 
        // of the given array
        return arr[n - 1] + arr[n - 2] + arr[n - 3];
    
      
    // Driven code
    public static void main(String args[])
    {
        int arr[] = { 1, 0, 8, 6, 4, 2 };
        int n = arr.length;
        System.out.println(maxTripletSum(arr, n));
    }
}
  
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 code to find 
# maximum triplet sum
  
# This function assumes 
# that there are at least 
# three elements in arr[].
def maxTripletSum(arr, n) :
  
    # sort the given array
    arr.sort()
  
    # After sorting the array. 
    # Add last three element 
    # of the given array
    return (arr[n - 1] + arr[n - 2] + arr[n - 3])
      
      
# Driven code
arr = [ 1, 0, 8, 6, 4, 2 ]
n = len(arr)
  
print(maxTripletSum(arr, n))
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to find maximum triplet sum
using System;
  
class GFG {
  
    // This function assumes that there are
    // at least three elements in arr[].
    static int maxTripletSum(int[] arr, int n)
    {
        // sort the given array
        Array.Sort(arr);
  
        // After sorting the array.
        // Add last three element
        // of the given array
        return arr[n - 1] + arr[n - 2] + arr[n - 3];
    }
  
    // Driven code
    public static void Main()
    {
        int[] arr = { 1, 0, 8, 6, 4, 2 };
        int n = arr.Length;
        Console.WriteLine(maxTripletSum(arr, n));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to find 
// maximum triplet sum
  
// This function assumes that
// there are at least 
// three elements in arr[].
function maxTripletSum( $arr, $n)
{
    // sort the given array
    sort($arr);
  
    // After sorting the array. 
    // Add last three element 
    // of the given array
    return $arr[$n - 1] + $arr[$n - 2] +
                          $arr[$n - 3];
}
  
// Driver code
$arr = array( 1, 0, 8, 6, 4, 2 );
$n = count($arr);
echo maxTripletSum($arr, $n);
  
// This code is contributed by anuj_67.
?>

chevron_right


Output :

18

Time complexity : O(nlogn)
Space complexity : O(1)

Efficent approach : Scan the array and compute Maximum, second maximum and third maximum element present in the array and return the sum of its and it would be maximum sum .

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to find maximum triplet sum
#include <bits/stdc++.h>
using namespace std;
  
// This function assumes that there are at least 
// three elements in arr[].
int maxTripletSum(int arr[], int n)
{
    // Initialize Maximum, second maximum and third
    // maximum element
    int maxA = INT_MIN, maxB = INT_MIN, maxC = INT_MIN;
  
    for (int i = 0; i < n; i++) {
  
        // Update Maximum, second maximum and third
        // maximum element
        if (arr[i] > maxA) {
            maxC = maxB;
            maxB = maxA;
            maxA = arr[i];
        }
  
        // Update second maximum and third maximum
        // element
        else if (arr[i] > maxB) {
            maxC = maxB;
            maxB = arr[i];
        }
  
        // Update third maximum element
        else if (arr[i] > maxC)
            maxC = arr[i];
    }
  
    return (maxA + maxB + maxC);
}
  
// Driven code
int main()
{
    int arr[] = { 1, 0, 8, 6, 4, 2 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << maxTripletSum(arr, n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to find maximum triplet sum
import java.io.*;
import java.util.*;
  
  
class GFG {
      
    // This function assumes that there 
    // are at least  three elements in arr[].
    static int maxTripletSum(int arr[], int n)
    {
        // Initialize Maximum, second maximum and third
        // maximum element
        int maxA = -100000000, maxB = -100000000;
        int maxC = -100000000;
      
        for (int i = 0; i < n; i++) {
      
            // Update Maximum, second maximum 
            // and third maximum element
            if (arr[i] > maxA) 
            {
                maxC = maxB;
                maxB = maxA;
                maxA = arr[i];
            }
      
            // Update second maximum and third maximum
            // element
            else if (arr[i] > maxB) 
            {
                maxC = maxB;
                maxB = arr[i];
            }
      
            // Update third maximum element
            else if (arr[i] > maxC)
                maxC = arr[i];
        }
      
        return (maxA + maxB + maxC);
    }
  
    // Driven code
    public static void main(String args[])
    {
        int arr[] = { 1, 0, 8, 6, 4, 2 };
        int n = arr.length;
        System.out.println(maxTripletSum(arr, n));
    }
}
  
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 code to find 
# maximum triplet sum
  
# This function assumes 
# that there are at least 
# three elements in arr[].
def maxTripletSum(arr, n) :
  
    # Initialize Maximum, second 
    # maximum and third maximum 
    # element
    maxA = -100000000
    maxB = -100000000
    maxC = -100000000
  
    for i in range(0, n) :
      
        # Update Maximum, second maximum
        # and third  maximum element
        if (arr[i] > maxA) :
            maxC = maxB
            maxB = maxA
            maxA = arr[i]
  
        # Update second maximum and 
        # third maximum element
        elif (arr[i] > maxB) :
            maxC = maxB
            maxB = arr[i]
          
        # Update third maximum element
        elif (arr[i] > maxC) :
            maxC = arr[i]
              
    return (maxA + maxB + maxC)
      
# Driven code
arr = [ 1, 0, 8, 6, 4, 2 ]
n = len(arr)
  
print(maxTripletSum(arr, n))
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to find maximum triplet sum
using System;
  
class GFG {
  
    // This function assumes that there
    // are at least three elements in arr[].
    static int maxTripletSum(int[] arr, int n)
    {
        // Initialize Maximum, second maximum
        // and third maximum element
        int maxA = -100000000, maxB = -100000000;
        int maxC = -100000000;
  
        for (int i = 0; i < n; i++) {
  
            // Update Maximum, second maximum
            // and third maximum element
            if (arr[i] > maxA) {
                maxC = maxB;
                maxB = maxA;
                maxA = arr[i];
            }
  
            // Update second maximum and third
            // maximum element
            else if (arr[i] > maxB) {
                maxC = maxB;
                maxB = arr[i];
            }
  
            // Update third maximum element
            else if (arr[i] > maxC)
                maxC = arr[i];
        }
  
        return (maxA + maxB + maxC);
    }
  
    // Driven code
    public static void Main()
    {
        int[] arr = { 1, 0, 8, 6, 4, 2 };
        int n = arr.Length;
        Console.WriteLine(maxTripletSum(arr, n));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to find 
// maximum triplet sum
  
// This function assumes that 
// there are at least three
// elements in arr[].
function maxTripletSum($arr, $n)
{
    // Initialize Maximum, 
    // second maximum and 
    // third maximum element
    $maxA = PHP_INT_MIN; 
    $maxB = PHP_INT_MIN; 
    $maxC = PHP_INT_MIN;
  
    for ( $i = 0; $i < $n; $i++) 
    {
  
        // Update Maximum,
        // second maximum and 
        // third maximum element
        if ($arr[$i] > $maxA
        {
            $maxC = $maxB;
            $maxB = $maxA;
            $maxA = $arr[$i];
        }
  
        // Update second maximum and 
        // third maximum element
        else if ($arr[$i] > $maxB
        {
            $maxC = $maxB;
            $maxB = $arr[$i];
        }
  
        // Update third maximum element
        else if ($arr[$i] > $maxC)
            $maxC = $arr[$i];
    }
  
    return ($maxA + $maxB + $maxC);
}
  
// Driven code
$arr = array( 1, 0, 8, 6, 4, 2 );
$n = count($arr);
echo maxTripletSum($arr, $n);
  
// This code is contributed by anuj_67.
?>

chevron_right



Output :

18

Time complexity : O(n)
Space complexity : O(1)



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.



Improved By : vt_m



Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.