일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- matplotlib
- aggs
- API
- token filter test
- Mac
- Java
- Kafka
- sort
- aggregation
- zip 암호화
- TensorFlow
- ELASTIC
- license delete
- License
- analyzer test
- MySQL
- springboot
- query
- docker
- Python
- plugin
- Elasticsearch
- zip 파일 암호화
- Test
- 900gle
- 파이썬
- flask
- licence delete curl
- high level client
- 차트
Archives
- Today
- Total
개발잡부
[codility] MaxProductOfThree 본문
반응형
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:
(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:
class Solution { public int solution(int[] 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:
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].
public static int solution(int[] A) {
int ret = 0;
Arrays.sort(A);
int l = A.length - 1;
ret = A[l] * A[l - 1] * A[l - 2];
if (A[0] <= 0 && A[1] <= 0 && A[l] >= 0) {
int ret2 = A[0] * A[1] * A[l];
if (ret2 > ret) {
ret = ret2;
}
}
return ret;
}
반응형
'이직' 카테고리의 다른 글
[codility] NumberOfDiscIntersections (0) | 2022.07.25 |
---|---|
[codility] Triangle (0) | 2022.07.25 |
[codility] Distinct (0) | 2022.07.24 |
코딜리티 12 (0) | 2022.07.24 |
코딜리티 11 (0) | 2022.07.24 |
Comments