Maximum triplet sum in array - GeeksforGeeks

05 Nov, 2021
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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 sumimport 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 codearr = [ 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 sumusing 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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 sumimport 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 codearr = [ 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 sumusing 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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 sumimport 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 codearr = [ 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 sumusing 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) 
vt_m
mayanktyagi1709
sanjoy_62
surbhityagi15
as5853535
abhishek0719kadiyan
Arrays
Sorting
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Arrays in Java
Arrays in C/C++
Program for array rotation
Stack Data Structure (Introduction and Program)
Top 50 Array Coding Problems for Interviews