• LeetCode 888. Fair Candy Swap


    Alice and Bob have a different total number of candies. You are given two integer arrays aliceSizes and bobSizes where aliceSizes[i] is the number of candies of the ith box of candy that Alice has and bobSizes[j] is the number of candies of the jth box of candy that Bob has.

    Since they are friends, they would like to exchange one candy box 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 number of candies in each box they have.

    Return an integer array answer where answer[0] is the number of candies in the box that Alice must exchange, and answer[1] is the number of candies in the box that Bob must exchange. If there are multiple answers, you may return any one of them. It is guaranteed that at least one answer exists.

    Example 1:

    Input: aliceSizes = [1,1], bobSizes = [2,2]
    Output: [1,2]
    

    Example 2:

    Input: aliceSizes = [1,2], bobSizes = [2,3]
    Output: [1,2]
    

    Example 3:

    Input: aliceSizes = [2], bobSizes = [1,3]
    Output: [2,3]
    

    Constraints:

    • 1 <= aliceSizes.length, bobSizes.length <= 104
    • 1 <= aliceSizes[i], bobSizes[j] <= 105
    • Alice and Bob have a different total number of candies.
    • There will be at least one valid answer for the given input.

    给了俩数组,要求换这俩数组中的两个数字,交换以后两个数组之和相等。

    其实就是个简单的数学问题,计算数组a和数组b的总和之差是多少,然后看看b里面是否有a - diff的数字(用set记录b里的数字),最后return就行了。最开始想多了还在求diff的时候用了math.abs,这样会导致分配的不够。

    1. class Solution {
    2. public int[] fairCandySwap(int[] aliceSizes, int[] bobSizes) {
    3. int aCount = 0;
    4. int bCount = 0;
    5. Set<Integer> bSet = new HashSet<>();
    6. for (int i : aliceSizes) {
    7. aCount += i;
    8. }
    9. for (int i : bobSizes) {
    10. bCount += i;
    11. bSet.add(i);
    12. }
    13. int diff = (aCount - bCount) / 2;
    14. for (int i : aliceSizes) {
    15. int match = i - diff;
    16. if (bSet.contains(match)) {
    17. return new int[]{i, match};
    18. }
    19. }
    20. return new int[2];
    21. }
    22. }

  • 相关阅读:
    nodejs+vue电影网站elementui
    leetcode 39. 组合总和 回溯法求解(c++版本)
    静态代理IP是什么?一文看懂静态代理IP
    python moviepy学习系列(一)安装及功能模板简介
    conda命令大全
    常见的十种排序算法C++实现(附时空复杂度,稳定性分析)
    慕思股份深交所上市:靠床垫和“洋老头”走红 市值224亿
    python3基础语法
    python为什么慢?(自用)
    P1030 [NOIP2001 普及组] 求先序排列
  • 原文地址:https://blog.csdn.net/qq_37333947/article/details/127896662