package com.daily.daily20210201;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* @Project: dailyCode
* @Site: http://www.zhao1iang.club/
* @Copyright: ©CodeLamp
* @Author: zhaoliang
* @Create: 2021-02-01 14:40
* @Desc: 公平的糖果棒
**/
public class fairCandySwap {
//爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。
//
//因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)
//
//返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1]是 Bob 必须交换的糖果棒的大小。
//SumA - x + y = SumB-y + x
// y = (SumA-SumB) /2 + x
//如果有多个答案,你可以返回其中任何一个。保证答案存在。
public int[] fairCandySwap(int[] A,int [] B){
int[] ans = new int[2];
int sumA = Arrays.stream(A).sum();
int sumB = Arrays.stream(B).sum();
int tem = sumA - sumB/2;
Set<Integer> set = new HashSet<>();
for (int num:A) {
set.add(num);
}
for (int num:B
) {
int x = num+tem;
if (set.contains(x)){
ans[0] = x;
ans[1] = num;
break;
}
}
return ans;
}
}
日常刷题-公平的糖果棒
最新推荐文章于 2021-02-01 18:14:02 发布