Open In App

Maximum triplet sum in array

Last Updated : 05 Nov, 2021
Comments
Improve
Suggest changes
Like Article
Like
Report

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


 


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)
 


Next Article
Article Tags :
Practice Tags :

Similar Reads