class Solution {
public int solution(int[] queue1, int[] queue2) {
int answer = 0;
long sum = 0;
long target = 0;
long sum1 = Arrays.stream(queue1).sum();
long sum2 = Arrays.stream(queue2).sum();
sum = sum1 + sum2;
target = sum / 2;
Queue<Integer> que1 = new LinkedList<>();
Queue<Integer> que2 = new LinkedList<>();
for (int i = 0; i <= queue1.length-1 ; i++) {
if (queue1[i] <= target) {
que1.add(queue1[i]);
}
if (queue2[i] <= target) {
que2.add(queue2[i]);
}
}
if (que1.size() == que2.size() && sum % 2 == 0) {
while (sum1 != sum2) {
if (sum1 > sum2) {
int popNum = que1.poll();
que2.add(popNum);
sum1 -= popNum;
sum2 += popNum;
} else {
int popNum = que2.poll();
que1.add(popNum);
sum2 -= popNum;
sum1 += popNum;
}
answer++;
}
} else {
answer = -1;
}
return answer;
}
}
class Solution {
public int solution(int[] queue1, int[] queue2) {
int answer = 0;
long sum1 = 0;
long sum2 = 0;
List<Integer> que = new ArrayList<>();
for (int i = 0; i < queue1.length; i++) {
sum1 += queue1[i];
sum2 += queue2[i];
que.add(queue1[i]);
}
for (int i = 0; i < queue1.length; i++) {
que.add(queue2[i]);
}
int idx1 = 0;
int idx2 = que.size()/2 ;
while (sum1 != sum2) {
if (idx1 >= que.size() || idx2 >= que.size()) {
answer = -1;
break;
} else {
if (sum1 < sum2) {
sum2 -= que.get(idx2);
sum1 += que.get(idx2);
idx2++;
} else {
sum1 -= que.get(idx1);
sum2 += que.get(idx1);
idx1++;
}
}
answer++;
}
return answer;
}
}