Tasks Details
easy
Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R).
Task Score
100%
Correctness
100%
Performance
100%
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] = 6contains the following example triplets:
- (0, 1, 2), product is −3 * 1 * 2 = −6
- (1, 2, 4), product is 1 * 2 * 5 = 10
- (2, 4, 5), product is 2 * 5 * 6 = 60
Your goal is to find the maximal product of any triplet.
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] = 6the function should return 60, as the product of triplet (2, 4, 5) is maximal.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [3..100,000];
- each element of array A is an integer within the range [−1,000..1,000].
Copyright 2009–2024 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used JavaScript
Time spent on task 10 minutes
Notes
not defined yet
Task timeline
Code: 14:47:33 UTC,
java,
autosave
Code: 14:47:56 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop.
A.sort();
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:53:51 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (hi).
A.sort();
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:54:05 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort();
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:55:40 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort();
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:55:45 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort();
let length = A.length;
cons
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:55:49 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort();
let length = A.length;
console.log(Int32Array)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:55:52 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort();
let length = A.length;
console.log(A)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:56:31 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a,));
let length = A.length;
console.log(A)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:56:42 UTC,
js,
autosave
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
console.log(A)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Code: 14:56:43 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
console.log(A)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:56:48 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:56:51 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
console.log(A)
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:56:56 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis
Code: 14:56:58 UTC,
js,
final,
score: 
100
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
// Since this is a sorting qn... just use sort instead of loop (which might be faster since guaranteed O(n) for that).
A.sort((a, b) => a - b);
let length = A.length;
return Math.max(A[length-1] * A[length-2] * A[length-3], A[length-1] * A[0] * A[1]);
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N * log(N))
expand all
Correctness tests
1.
0.072 s
OK
2.
0.072 s
OK
3.
0.072 s
OK
1.
0.072 s
OK
2.
0.072 s
OK
3.
0.072 s
OK
4.
0.072 s
OK
1.
0.076 s
OK
2.
0.072 s
OK
3.
0.072 s
OK
1.
0.076 s
OK
expand all
Performance tests
1.
0.088 s
OK
1.
0.120 s
OK
1.
0.200 s
OK
1.
0.136 s
OK
1.
0.128 s
OK
2.
0.120 s
OK