Maximum triplet sum in array
Last Updated :
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++
// 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)
Similar Reads
Maximum Sum of Array with given MEX
Given 3 integers N, K, and X, the task is to construct an array arr[] with the below conditions: Size of the array = NMEX of the array = KAll array elements should be at most XAmong all the array that follows the above condition print the one having the maximum sum of its elements or print -1 if no
7 min read
Maximum Path sum in a N-ary Tree
Given an undirected tree with n nodes numbered from 1 to n and an array arr[] where arr[i] denotes the value assigned to (i+1)th node. The connections between the nodes are provided in a 2-dimensional array edges[][]. The task is to find the maximum path sum between any two nodes. (Both the nodes ca
7 min read
Find Maximum Sum of Mountain Triplets
Given an array A[] of integers. Then the task is to output the maximum sum of a triplet (Ai, Aj, Ak) such that it must follow the conditions: (i < j < k) and (Ai < Aj > Ak). If no such triplet exists, then output -1. Examples: Input: A[] = {1, 5, 4, 7, 3} Output: 15 Explanation: There ar
13 min read
Maximum sum combination from the given array
Given an array arr[] of N integers and three integers X, Y and Z. The task is to find the maximum value of (arr[i] * X) + (arr[j] * Y) + (arr[k] * Z) where 0 ? i ? j ? k ? N - 1. Examples: Input: arr[] = {1, 5, -3, 4, -2}, X = 2, Y = 1, Z = -1 Output: 18 (2 * 5) + (1 * 5) + (-1 * -3) = 18 is the max
12 min read
Maximum equilibrium sum in an array
Given an array arr[]. Find the maximum value of prefix sum which is also suffix sum for index i in arr[].Examples : Input : arr[] = {-1, 2, 3, 0, 3, 2, -1}Output : 4Explanation : Prefix sum of arr[0..3] = Suffix sum of arr[3..6]Input : arr[] = {-3, 5, 3, 1, 2, 6, -4, 2}Output : 7Explanation : Prefix
11 min read
Optimizing K for Maximum Sum in Array
Given an array A[] of size N. You have to choose a number K between 1 and N (inclusive). Your score will be the sum of all the elements A[i] such that i is a multiple of K, the task is to find the minimum value of K with the maximum sum. Examples: Input: N = 2, A[] = {-3, 4}Output: 2Explanation: If
6 min read
Find Sum of pair from two arrays with maximum sum
Given two arrays of positive and distinct integers. The task is to find a pair from the two arrays with maximum sum. Note: The pair should contain one element from both the arrays. Examples: Input : arr1[] = {1, 2, 3}, arr2[] = {4, 5, 6} Output : Max Sum = 9 Pair (3, 6) has the maximum sum. Input :
6 min read
Find Maximum value of Increasing Triplet
Given an array arr[], the task is to return the maximum value of increasing triplet (i, j, k) such that i < j < k and arr[i] < arr[j] < arr[k]. The value of a triplet (i, j, k) is arr[i] - arr[j] + arr[k]. Example: Input: arr = {1, 2, 3,4, 5}Output: 4 Input: arr = {11, 2, 33, 4, 5}Output
8 min read
Maximizing array sum with given operation
There is an array consisting of (2 * n - 1) integers. We can change sign of exactly n elements in the array. In other words, we can select exactly n array elements, and multiply each of them by -1. Find the maximum sum of the array. Examples : Input : arr[] = 50 50 50 Output : 150 There is no need t
6 min read
Longest Sub-array with maximum average value
Given an array arr[] of n integers. The task is to find the maximum length of the sub-array which has the maximum average value (average of the elements of the sub-array). Examples: Input: arr[] = {2, 3, 4, 5, 6} Output: 1 {6} is the required sub-arrayInput: arr[] = {6, 1, 6, 6, 0} Output: 2 {6} and
6 min read