일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Java
- zip 암호화
- aggregation
- springboot
- docker
- token filter test
- TensorFlow
- MySQL
- flask
- plugin
- query
- licence delete curl
- analyzer test
- Python
- zip 파일 암호화
- aggs
- sort
- ELASTIC
- Mac
- 파이썬
- 900gle
- API
- matplotlib
- Test
- 차트
- Kafka
- high level client
- License
- Elasticsearch
- license delete
Archives
- Today
- Total
개발잡부
코딜리티 6 본문
반응형
A non-empty array A consisting of N integers is given. Array A represents numbers on a tape.
Any integer P, such that 0 < P < N, splits this tape into two non-empty parts: A[0], A[1], ..., A[P − 1] and A[P], A[P + 1], ..., A[N − 1].
The difference between the two parts is the value of: |(A[0] + A[1] + ... + A[P − 1]) − (A[P] + A[P + 1] + ... + A[N − 1])|
In other words, it is the absolute difference between the sum of the first part and the sum of the second part.
For example, consider array A such that:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
We can split this tape in four places:
P = 1, difference = |3 − 10| = 7
P = 2, difference = |4 − 9| = 5
P = 3, difference = |6 − 7| = 1
P = 4, difference = |10 − 3| = 7
Write a function:
class Solution { public int solution(int[] A); }
that, given a non-empty array A of N integers, returns the minimal difference that can be achieved.
For example, given:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
the function should return 1, as explained above.
Write an efficient algorithm for the following assumptions:
N is an integer within the range [2..100,000];
each element of array A is an integer within the range [−1,000..1,000].
이것도 30%
// write your code in Java SE 8
int ret = A[0];
for (int k = 1; k < A.length; k++) {
int a = 0;
int b = 0;
for (int i = 0; i < A.length; i++) {
if (k > (i )) {
a += A[i];
} else {
b += A[i];
}
}
int abs = Math.abs(a - b);
if (ret > abs) {
ret = abs;
}
}
return ret;
아 써글 더느려
public static int solution(int[] A) {
// write your code in Java SE 8
int ret = Math.abs(A[0]);
for (int k = 1; k < A.length; k++) {
int a = Arrays.stream(Arrays.copyOfRange(A, 0, k)).sum();
int b = Arrays.stream(Arrays.copyOfRange(A, k, A.length)).sum();
int abs = Math.abs(a - b);
if (ret > abs) {
ret = abs;
}
}
return ret;
}
반응형
Comments