1. 题目原址
https://leetcode.com/problems/fair-candy-swap/
2. 题目描述
3. 题目大意
给定两个数组,交换数组中的两个元素,使得两个数组的元素和相等
4. 解题思路
- 首先分别计算出A和B数组的和,然后计算平均值 avg,平均值就是A和B交换后数组中的和
- 然后一次遍历数组A,遍历到第 i 个数,如果把 A[i] 换掉,那么A中剩余元素的和是:sumA - A[i]。要想使A的各元素和达到avg,还差avg - (sumA - A[i]);所以如果数组B中存在avg - (sumA - A[i]),那么返回值就是 A[i] 和 avg - (sumA - A[i])。
5. AC代码
class Solution {
public int[] fairCandySwap(int[] A, int[] B) {
Set<Integer> hashSet = new HashSet<Integer>();
int sumA = 0, sumB = 0;
int avg = 0;
int[]