888. Fair Candy Swap

描述

Alice and Bob have candy bars of different sizes: A[i] is the size of the i-th bar of candy that Alice has, and B[j] is the size of the j-th bar of candy that Bob has.

Since they are friends, they would like to exchange one candy bar each so that after the exchange, they both have the same total amount of candy. (The total amount of candy a person has is the sum of the sizes of candy bars they have.)

Return an integer array ans where ans[0] is the size of the candy bar that Alice must exchange, and ans[1] is the size of the candy bar that Bob must exchange.

If there are multiple answers, you may return any one of them. It is guaranteed an answer exists.

Example 1:

Input: A = [1,1], B = [2,2]
Output: [1,2]
Example 2:

Input: A = [1,2], B = [2,3]
Output: [1,2]
Example 3:

Input: A = [2], B = [1,3]
Output: [2,3]
Example 4:

Input: A = [1,2,5], B = [2,4]
Output: [5,4]

Note:

1 <= A.length <= 10000
1 <= B.length <= 10000
1 <= A[i] <= 100000
1 <= B[i] <= 100000
It is guaranteed that Alice and Bob have different total amounts of candy.
It is guaranteed there exists an answer.

思路

先看看每个人一共有多少,再看看俩人相差多少,相差的一半,就是要给对方的。换句话说,我们要给对方相差的一半,遍历两个人的数组,看哪俩元素满足“相差的一半”这个条件

代码

class Solution {
public:
    vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
        int sumA = 0;
        int sumB = 0;
        
        for(int i = 0; i < A.size(); i++)
        {
            sumA += A[i];
        }
        
        for(int i = 0; i< B.size(); i++)
        {
            sumB += B[i];
        }
        
        vector<int> res;
        int gap = (sumA - sumB)/2;//相差的一半
        
        for(int i = 0; i<A.size(); i++)
        {
            for(int j = 0; j<B.size();j++)
            {
                if(A[i] - B[j] == gap)//寻找元素满足相差的一半
                {
                    res.push_back(A[i]);
                    res.push_back(B[j]);
                    return res;
                }
            }
        }
        
    }
};
    原文作者:美不胜收oo
    原文地址: https://www.jianshu.com/p/4d8594006162
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞