解题思路:根据说明,一定有解,糖果总量mid一定是介于suma,sumb之间,找到两个数组和的最小值_min;mid和_min的差值te,加上和为_min的数组的某一个值,一定能在另一个数组中找到,这就是结果
class Solution {
public:
vector<int> fairCandySwap(vector<int>& A, vector<int>& B)
{
int suma = accumulate(A.begin(), A.end(), 0);
int sumb = accumulate(B.begin(), B.end(), 0);
int sum = suma + sumb;
int mid = sum / 2;
vector<int>ans, temp;
temp = suma >sumb ? B : A;
int _min = min(suma, sumb);
if (temp.size()==1)
{
ans = { temp[0],mid };
}
else
{
int te = mid - _min;
for (int i = 0; i < temp.size(); i++)
{
int te = mid - _min + temp[i];
if (temp == A && find(B.begin(), B.end(), te) != B.end())
{
ans = { temp[i],te };
break;
}
else if (temp == B && find(A.begin(), A.end(), te) != A.end())
{
ans = { te,temp[i] };
break;
}
}
}
return ans;
}
};