资讯专栏INFORMATION COLUMN

888-公平的糖果交换

lakeside / 1373人阅读

摘要:前言的的题目公平的糖果交换,原题目描述如下爱丽丝和鲍勃有不同大小的糖果棒是爱丽丝拥有的第块糖的大小,是鲍勃拥有的第块糖的大小。返回一个整数数组,其中是爱丽丝必须交换的糖果棒的大小,是必须交换的糖果棒的大小。

前言

LeetCode的Weekly Contest 98的题目公平的糖果交换,原题目描述如下:

爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。

因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)

返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。

如果有多个答案,你可以返回其中任何一个。保证答案存在。

示例 1:
输入:A = [1,1], B = [2,2]
输出:[1,2]

示例 2:
输入:A = [1,2], B = [2,3]
输出:[1,2]

示例 3:
输入:A = [2], B = [1,3]
输出:[2,3]

示例 4:
输入:A = [1,2,5], B = [2,4]
输出:[5,4]

解题思路

根据题目的描述可以知道实际上爱丽丝和鲍勃只是交换了双方的一个糖果就能够让双方的糖果棒大小一致。所以其实这道题目十分简单,只要穷举各自互换糖果后的大小是否一致就可以找出双方互换的糖果了。

实现代码
    /**
     * 888. 公平的糖果交换
     * @param A 
     * @param B
     * @return
     */
    public int[] fairCandySwap(int[] A, int[] B) {
        int[] result = new int[2];
        //获取双方糖果的总大小
        int sumA = sum(A);
        int sumB = sum(B);
        for (int i = 0; i < A.length; i++) {
            int a = A[i];
            for (int j = 0; j < B.length; j++) {
                int b = B[j];
                //计算交换糖果后糖果的总大小
                int tmpA = sumA - a + b;
                int tmpB = sumB - b + a;
                if (tmpA == tmpB) {//判断交换后是否一致
                    result[0] = a;
                    result[1] = b;
                    break;
                }
            }

        }
        return result;
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76798.html

相关文章

  • 70道前端LeetCode题目集合及视频讲解(持续更新中...)

    前端LeetCode刷题 下面是已刷的题目的目录。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,欢迎关注。 数组类 26 删除排序数组中的重复项 27 移除元素 35 搜索插入位置 66 加1 80 medium 删除排序数组中的重复项2 88 合并两个有序数组 167 两数之和II - 输入有序数组 118 杨辉三角 169 easy 求众数 1...

    mayaohua 评论0 收藏0
  • 开发之路(设计模式十一:状态模式)

    摘要:重构旧代码,取而代之方式是将动作委托给状态类。注这个模式是将状态封装成为独立地类,并将动作委托给代表当前状态的对象。 通过改变对象内部状态帮助对象控制行为 以一个简单例子说明,假设我们要模拟制造一台糖果机器,对方给你的机器流程图如下 showImg(https://segmentfault.com/img/bVXuWe?w=512&h=466); ok,我们现在简单分析这张状态图,可...

    Meils 评论0 收藏0
  • 1104-分糖果 II

    摘要:重复上述过程每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始,直到我们分完所有的糖果。返回一个长度为元素之和为的数组,以表示糖果的最终分发情况即表示第个小朋友分到的糖果数。 前言 Weekly Contest 143的 分糖果 II 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1...

    lily_wang 评论0 收藏0
  • 【LeetCode】贪心算法--分发糖果(135)

    摘要:今日题目老师想给孩子们分发糖果,有个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。相邻的孩子中,评分高的孩子必须获得更多的糖果。示例输入输出解释你可以分别给这三个孩子分发颗糖果。第三个孩子只得到颗糖果,这已满足上述两个条件。 今日题目 老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖...

    刘永祥 评论0 收藏0
  • Java并发

    摘要:对象改变条件对象当前线程要等待线程终止之后才能从返回。如果线程在上的操作中被中断,通道会被关闭,线程的中断状态会被设置,并得到一个。清除线程的中断状态。非公平性锁虽然可能造成饥饿,但极少的线程切换,保证其更大的吞吐量。 声明:Java并发的内容是自己阅读《Java并发编程实战》和《Java并发编程的艺术》整理来的。 showImg(https://segmentfault.com/im...

    SKYZACK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<