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
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)
Please Login to comment...