Open In App

Maximum triplet sum in array

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




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




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




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




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




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




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


Article Tags :