Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Maximum triplet sum in array

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an array, the task is to find the 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

 

Recommended Practice

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

C++




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


Java




// 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.


Python3




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


C#




// 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.


PHP




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


Javascript




<script>
 
// JavaScript Program to find maximum triplet sum
 
    function maxTripletSum(arr, n)
    {
        // Initialize sum with INT_MIN
        let sum = -1000000;
      
        for (let i = 0; i < n; i++)
            for (let j = i + 1; j < n; j++)
                for (let 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
 
        let arr = [ 1, 0, 8, 6, 4, 2 ];
        let n = arr.length;
        document.write(maxTripletSum(arr, n));
                             
</script>
 
// This code is contributed by sanjoy_62.


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 the last three-element of the array then we find the maximum sum of triplets. 
 

C++




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


Java




// 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.


Python3




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


C#




// 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.


PHP




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


Javascript




<script>
 
//Javascript 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
    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
    let arr = [ 1, 0, 8, 6, 4, 2 ];
    let n = arr.length;
    document.write(maxTripletSum(arr, n));
 
// This code is contributed by Mayank Tyagi
 
</script>


Output:  

18

Time complexity: O(nlogn) 
Space complexity: O(1)
Efficient approach: Scan the array and compute the Maximum, second maximum, and third maximum element present in the array and return the sum of its and it would be maximum sum.
 

C++




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


Java




// 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.


Python3




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


C#




// 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.


PHP




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


Javascript




<script>
 
// JavaScript 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
    let maxA = Number.MIN_SAFE_INTEGER;
    let maxB = Number.MIN_SAFE_INTEGER;
    let maxC = Number.MIN_SAFE_INTEGER;
 
    for (let 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
    let arr = [ 1, 0, 8, 6, 4, 2 ];
    let n = arr.length;
    document.write(maxTripletSum(arr, n));
 
 
// This code is contributed by Surbhi Tyagi.
 
</script>


Output:  

18

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


My Personal Notes arrow_drop_up
Last Updated : 05 Nov, 2021
Like Article
Save Article
Similar Reads
Related Tutorials