解题思路:
1.遍历数组A 和B,分别求出A和B的总和,以及差值的平均
2.将B中的元素存入哈希表
3.遍历数组A,如果当前A中的元素加上差值平均后的值在B中存在,则这一对就是要求的结果
采坑点:如果加减都可以实现,那就用加,不要用减,我在这里卡了很久:我用sa-sb,然后用val-avg,导致越界
代码实现:
class Solution {
public int[] fairCandySwap(int[] A, int[] B) {
Set<Integer> set=new HashSet<>();
int sa=0,sb=0;
for(int val:A){
sa+=val;
}
for(int val:B){
sb+=val;
set.add(val);
}
//数组A B总和的差值的平均
int avg=(sb-sa)/2;
int[] res=new int[2];
for(int val:A){
if(set.contains(val+avg)){
res[0]=val;
res[1]=val+avg;
return res;
}
}
return res;
}
}