-
Notifications
You must be signed in to change notification settings - Fork 0
/
Maximum triplet product(GFG).cpp
45 lines (39 loc) · 1.05 KB
/
Maximum triplet product(GFG).cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
public:
long long maxTripletProduct(long long arr[], int n)
{
long long mn1= INT_MAX, mn2= INT_MAX, mx1= INT_MIN, mx2= INT_MIN, mx3= INT_MIN;
for(int p=0; p<n; p++){
// calculating first min and second minimum
if(arr[p]<mn1){
mn2=mn1;
mn1=arr[p];
}else if(arr[p]<mn2){
mn2=arr[p];
}
// similarly finding max1 , max2, max3 elements
if(arr[p]>mx1){
mx3=mx2;
mx2=mx1;
mx1=arr[p];
}else if(arr[p]>mx2){
mx3=mx2;
mx2=arr[p];
}else if(arr[p]>mx3){
mx3=arr[p];
}
}
return max( (mn1*mn2*mx1), (mx1*mx2*mx3));
}
};
/*class Solution {
public:
//naive approach O(nlogn)
/*
long long maxTripletProduct(long long arr[], int n)
{
sort(arr,arr+n);
long long mn1=arr[0],mn2=arr[1],mx1=arr[n-1],mx2=arr[n-2],mx3=arr[n-3];
return max((mn1*mn2*mx1),(mx1*mx2*mx3));
}
*/