Если я правильно понял, это то, что вы ищете, этот метод вернет true, если вы передадите ему три ваших массива, если выполняется указанное условие (сумма элементов в массивах равна, если не удалить)последний элемент из самого большого и перепроверить для условия).
public class SumArray {
public static void main(String[] args) {
//Cant converge
int[] arr1={1,2,3,4,5};
int[] arr2={6,7,8,9};
int[] arr3={10,11,12,13};
new SumArray().sumBasedArrayResize(arr1, arr2, arr3);
//Converge
int[] arr1={1,2,3,4,5};
int[] arr2={1,2,3,4,5};
int[] arr3={1,2,3,4,5};
new SumArray().sumBasedArrayResize(arr1, arr2, arr3);
}
private boolean sumBasedArrayResize(int[] arr1, int[] arr2,int[] arr3) {
while(true) {
int sum1 = IntStream.of(arr1).sum();
int sum2 = IntStream.of(arr2).sum();
int sum3 = IntStream.of(arr3).sum();
if (sum1 == sum2 && sum2 == sum3) {
// ok case
System.out.println("Sum of arr1 == Sum of arr2 == Sum of arr3");
return true;
} else if (arr1.length == 0 || arr2.length == 0 || arr3.length == 0 ) {
System.out.println(" Cant converge ");
return false;
}
if (sum1 > sum2) {
if (sum1 > sum3) {
//sum1 is large
System.out.println("Sum of elements in arr1 is largest, removing last element from arr1 " + sum1);
arr1 = Arrays.copyOf(arr1, arr1.length - 1);
} else {
// sum3 large
System.out.println("Sum of elements in arr3 is largest, removing last element from arr3 " + + sum3);
arr3 = Arrays.copyOf(arr3, arr3.length - 1);
}
} else {
if (sum2 > sum3) {
//sum2 is large
System.out.println("Sum of elements in arr2 is largest, removing last element from arr2 " + sum2);
arr2 = Arrays.copyOf(arr2, arr2.length - 1);
} else {
// sum3 large
System.out.println("Sum of elements in arr3 is largest, removing last element from arr3 " + + sum3);
arr3 = Arrays.copyOf(arr3, arr3.length - 1);
}
}
}
}
}