A non-empty array A consisting of N integers is given. The product of triplet (P, Q, R) equates to A[P] _ A[Q] _ A[R] (0 ≤ P < Q < R < N).
For example, array A such that:
A[0] = -3
A[1] = 1
A[2] = 2
A[3] = -2
A[4] = 5
A[5] = 6
contains the following example triplets:
Write a function:
function solution(A);
that, given a non-empty array A, returns the value of the maximal product of any triplet.
For example, given array A such that:
A[0] = -3
A[1] = 1
A[2] = 2
A[3] = -2
A[4] = 5
A[5] = 6
the function should return 60, as the product of triplet (2, 4, 5) is maximal.
Write an efficient algorithm for the following assumptions:
function solution(A) {
A.sort((a, b) => a - b);
let multiplyBottomLine = A[0] * A[1];
let multiplySecondThirdLargest = A[A.length - 3] * A[A.length - 2];
let isMinusArray = A.every((v) => v < 0);
if (
!isMinusArray &&
multiplyBottomLine > 0 &&
multiplySecondThirdLargest < multiplyBottomLine
) {
return A[A.length - 1] * multiplyBottomLine;
}
return A[A.length - 1] * multiplySecondThirdLargest;
}
https://app.codility.com/demo/results/training5YEY4B-KNJ/
function solution(A) {
// first we order it
A.sort((a, b) => a - b);
// we see the first two possibilities and we compare them
let val1 = A[A.length - 1] * A[A.length - 2] * A[A.length - 3];
let val2 = A[A.length - 1] * A[0] * A[1];
// we return the higher value
if (val1 > val2) {
return val1;
} else {
return val2;
}
}