zoukankan      html  css  js  c++  java
  • 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.
    约束条件:只能交换一个糖 
    #include<iostream>
    #include<vector>
    #include<set>
    #include<unordered_set>
    using namespace std;
    class Solution {
    public:
        vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
            int sum_a=0;
            for (auto a: A) sum_a+=a;
            int sum_b=0;
            for (auto b: B) sum_b+=b;
            int diff=(sum_a-sum_b)/2;
            unordered_set<int> set_a(A.begin(),A.end());
            for(auto b: B){
                if(set_a.find(b+diff)!=set_a.end())
                    return {b+diff,b};
            }
        }
    };
    int main(){
        Solution solution;
        vector<int> A{1,2,5};
        vector<int> B{2,4};
        vector<int> res=solution.fairCandySwap(A, B);
        for(auto a: res)
            cout<<a<<" ";
        return 0;
    }
  • 相关阅读:
    Hello China最新开发进展
    虚拟软驱影像文件制作程序下载路径:http://download.csdn.net/source/738137
    Swing透明和变换
    利用Java存储过程简化数据库操作
    Hello China V1.5 源码下载地址
    防止程序重复执行的单元
    判断文件大小的函数
    TMainMenu 隐藏与显示菜单
    最简单的Delphi程序(控制台)
    测试代码
  • 原文地址:https://www.cnblogs.com/learning-c/p/9847644.html
Copyright © 2011-2022 走看看