题目描述:
爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j]是鲍勃
拥有的第 j 根糖果棒的大小。因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,
他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)
返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。
如果有多个答案,你可以返回其中任何一个。保证答案存在。
示例:
输入:A=[1 ,1] ,B=[2 ,2]
输出:[1 ,2]
输入:A=[2] ,B=[1 ,3]
输出:[2 ,3]
输入:A=[1 ,2 ,5] ,B=[2 ,4]
输出:[5 ,4]
提示:
1<= A.length<= 10000
1<= B.length<= 10000
1<= A[i]<=10000
1<=B[i]<=10000
综合解法(哈希表):
var A=[1,2,5],B=[2,4]; //A,B拥有的糖果 var totalA=0,totalB=0; //A,B各自拥有的糖果总量 totalA=A.reduce((acc,cur)=>{return acc+cur;});
totalB=B.reduce((acc,cur)=>{return acc+cur;});
var avaAB=Math.floor((totalA-totalB)/2);
var res; //最终得出的结果
var setA=new Set(A);
for(let y of B){
let x= y+ava;
if(setA.has(x)){
res=[x,y];
break;
}
}
console.log('最终结果:',res);
总结:
从A,B 关系可以得出如此关系:totalA-x+y=totalB-y+x,进一步化简可以得到 x=(totalA-totalB)/2+y;
根据公式我们可以得到每一个x实例,继而将A从哈希表中取出和x比较,如果一致即可;
一步一个脚印!!!继续加油
版权声明:本文为博主原创文章,如需转载,请标明出处。