P roblem
Find the minimum product of any three triplets in an array.
Sample Input
[1, 2, 3, 4]
Sample Output
6
Approach
We can sort the array and find the minimum product of the first 3 numbers and the product of the last two numbers and the first number. This is because a large number multiplied by a negative number will give a large negative number. This approach takes O(NlogN) time.
C++
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
intsolve(vector<int> arr)
{
sort(arr.begin(), arr.end());
int n = arr.size();
return min(arr[n-1] * arr[n-2] * arr[0], arr[0] * arr[1] * arr[2]);
}
intmain()
{
vector<int> arr = { 2, -1, 3, -5, 1 };
int min = solve(arr);
cout << "Minimum product is " << min;
}
Output
Minimum product is -30
Java
import java.util.Arrays;
classMain
{
publicstaticintsolve(int[] arr)
{
int n = arr.length;
Arrays.sort(arr);
return Integer.min(arr[n-1] * arr[n-2] * arr[0], arr[0] * arr[1] * arr[2]);
}
publicstaticvoidmain(String[] args)
{
int[] arr = { 1, -1, 3, 5, 10 };
int min = solve(arr);
System.out.print("Minimum product is " + min);
}
}
Output
Minimum product is -50
Python
def solve(arr):
n = len(arr)
arr.sort()
return min(arr[n-1] * arr[n-2] * arr[0], arr[0] * arr[1] * arr[2])
arr = [1, -1, 2, 9]
min = solve(arr)
print("Minimum product is", min)
Output
Minimum product is -18
People are also reading:
Leave a Comment on this Post