华为面试题,10个数分成两组,两数组和的最小差
import java.util.Arrays;
import java.util.Scanner;
//1 2 3 4 5 6 7 8 9 10
// 6 7 8 9 10
public class Test2 {
public static void main(String[] args) {
//2.调用处理数组的函数
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) {
// 数组a和b的和
int suma = getSum(a);
int sumb = getSum(b);
int startMinus = Math.abs(suma - sumb);
// System.out.println("startMinus="+startMinus);
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