题目描述:
示例1:
输入:A = [1,1], B = [2,2]
输出:[1,2]
示例2:
输入:A = [1,2], B = [2,3]
输出:[1,2]
示例3:
输入:A = [2], B = [1,3]
输出:[2,3]
思路:
这个题有意思,它就是让两个数组各交换一个值,然后看交换元素后两个数组的和是否相等
我是这样想的:首先分别计算出未交换元素时两个数组的元素值的总和(sumA和sumB)。
然后分别遍历两个数组:假如数组A的循环角标为i,数组B的循环角标为j,那么只需要在循环中找到一个i和一个j,使得sumA-A[i]+B[j]==sumB-B[j]+A[i],返回i和j对应的A[i]和B[j]即可。
java代码
class Solution {
public int[] fairCandySwap(int[] A, int[] B) {
int sumA=0;
int sumB=0;
int[] answer = new int[2];
for(int i=0;i<A.length;i++){
sumA+=A[i];
}
for(int j=0;j<B.length;j++){
sumB+=B[j];
}
for(int i=0;i<A.length;i++){
for(int j=0;j<B.length;j++){
if(sumA-A[i]+B[j]==sumB-B[j]+A[i]){
answer[0]=A[i];
answer[1]=B[j];
break;
}
}
}
return answer;
}
}