公平的糖果棒交换(java实现)
力扣 888. 公平的糖果棒交换
题目说明
爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。
因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)
返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。
如果有多个答案,你可以返回其中任何一个。保证答案存在。
- 1 <= A.length <= 10000
- 1 <= B.length <= 10000
- 1 <= A[i] <= 100000
- 1 <= B[i] <= 100000
- 保证爱丽丝与鲍勃的糖果总量不同。
- 答案肯定存在。
示例
例1
1 | 输入:A = [1,1], B = [2,2] |
例2
1 | 输入:A = [1,2], B = [2,3] |
例3
1 | 输入:A = [2], B = [1,3] |
例4
1 | 输入:A = [1,2,5], B = [2,4] |
笔者理解
此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,发现此题直接计算出两个数组的差值,然后再在A,B数组中寻找对应的配对元素即可,需要注意的是,A,B数组的差值是配对元素差值的两倍。
实现
1 | public int[] fairCandySwap(int[] A, int[] B) { |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是今天的每日一题,难度只有简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!









