A,B两数组,交换一个元素,以便交换后,相同的总和.
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 31 32 33 34 35 36 37 38 39 40 41 42
|
class Solution { public int[] fairCandySwap(int[] A, int[] B) { int alen = A.length; int blen = B.length; Long bsum = 0L; Long asum = 0L; for(int i=0;i<alen;i++){ asum = asum + A[i]; } for(int i=0;i<blen;i++){ bsum = bsum + B[i]; } int[] result = new int[2]; Set<Integer> values = new HashSet<Integer>(); int x = Math.abs(((Long)(bsum - asum)).intValue())/2; for(int i=0;i<alen;i++){ values.add(A[i]); } if (asum>bsum){ for(int i=0;i<blen;i++){ if (values.contains(B[i]+x)){ result[0] = B[i]+x; result[1] = B[i]; return result; } } } for(int i=0;i<blen;i++){ System.out.println(B[i]-x); if (values.contains(B[i]-x)){ result[0] = B[i]-x; result[1] = B[i]; return result; } } return result; } }
|
近期评论