华为面试题,10个数分成两组,两数组和的最小差
import java.util.Arrays;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[11];
for (int i = 0; i < 11; i++) {
arr[i] = sc.nextInt();
}
System.out.println(result(arr));
public static int result(int[] arr){
int a[] =new int[arr.length / 2], b[] = new int[arr.length / 2];
for (int i = 0; i < arr.length / 2; i++){
a[i] = arr[i];
b[i] = arr[i + arr.length / 2];
}
System.out.println("交换处理后的数组a:"+Arrays.toString(a));
System.out.println("交换处理后的数组b:"+Arrays.toString(b));
getMinusArray(a,b);
System.out.println("交换处理后的数组a:"+Arrays.toString(a));
System.out.println("交换处理后的数组b:"+Arrays.toString(b));
return Math.abs(getSum(a) - getSum(b));
}
public static void getMinusArray(int[] a, int[] b) {
int suma = getSum(a);
int sumb = getSum(b);
int startMinus = Math.abs(suma - sumb);
int minus = 0;
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a.length; j++) {
int temp=a[i];
a[i]=b[j];
b[j]=temp;
minus = Math.abs(getSum(a) - getSum(b));
if(minus<startMinus){
startMinus = minus;
}else{
int temp2=a[i];
a[i]=b[j];
b[j]=temp2;
}
}
}
System.out.println(startMinus);
}
public static int getSum(int[] arr) {
int sum = 0;
for (int i : arr) {
sum += i;
}
return sum;
}
}