Get the best out of our app
GFG App
Open App
Browser
Continue

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

 `// C++ code to find maximum triplet sum` `#include ` `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

 ``

## Javascript

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

 ``

## Javascript

 ``

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

 ` ``\$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

 ``

Output:

`18`

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

My Personal Notes arrow_drop_up
Similar Reads
Related Tutorials