每日一题 21.02.01 888. 公平的糖果棒交换 java题解

题目

https://leetcode-cn.com/problems/fair-candy-swap/
每日一题 21.02.01 888. 公平的糖果棒交换 java题解_第1张图片

代码

我自己写的超时了。
官方用哈希表做的。
代码如下。
每日一题 21.02.01 888. 公平的糖果棒交换 java题解_第2张图片

class Solution {
    public int[] fairCandySwap(int[] A, int[] B) {
        int sumA = Arrays.stream(A).sum();
        int sumB = Arrays.stream(B).sum();
        int delta = (sumA - sumB) / 2;
        Set<Integer> rec = new HashSet<Integer>();
        for (int num : A) {
            rec.add(num);
        }
        int[] ans = new int[2];
        for (int y : B) {
            int x = y + delta;
            if (rec.contains(x)) {
                ans[0] = x;
                ans[1] = y;
                break;
            }
        }
        return ans;
    }
}

复杂度

在这里插入图片描述

你可能感兴趣的:(LeetCode,哈希表)