Given an array, the task is to find 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 previous sum if the sum of three element is greater then store in 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. ?> |
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 last three element of the array then we find maximum sum of triplates.
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)
Efficent approach : Scan the array and compute 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. ?> |
Output :
18
Time complexity : O(n)
Space complexity : O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.