首页 > 其他 > 详细

1594. 公平的糖果交换

时间:2020-04-25 22:25:26      阅读:52      评论:0      收藏:0      [点我收藏+]

1594. 公平的糖果交换

中文English

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

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

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

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

样例

样例 1:

输入: A = [1,1], B = [2,2]
输出: [1,2]
解释: 
A和B只有交换[1, 2]能达到相同的糖果总数

样例 2:

输入: A = [2], B = [1,3]
输出: [2,3]
解释: 
A和B只有交换[2, 3]能达到相同的糖果总数

注意事项

  • 1 <= A.length <= 10000
  • 1 <= B.length <= 10000
  • 1 <= A[i] <= 100000
  • 1 <= B[i] <= 100000
  • 保证爱丽丝与鲍勃的糖果总量不同。
  • 答案肯定存在。
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param A: an array
    @param B: an array
    @return: an integer array
    """
    ‘‘‘
    大致思路:
    1.两者糖果大小总和相减,然后根据i和i+(减数//2)分别判断是否存在A和B中,保证是存在的
    ‘‘‘
    def fairCandySwap(self, A, B):
        res = self.getCandyL(A,B) if len(A) <= len(B) else self.getCandyL(B,A)[::-1]
        return res

    def getCandyL(self,l1,l2):
        #保证l2是大于l2的
        n = (sum(l2) - sum(l1))//2
        i = 1
        while True:
            if i in l1 and i+n in l2:
                return [i,i+n]
            i += 1

 

1594. 公平的糖果交换

原文:https://www.cnblogs.com/yunxintryyoubest/p/12775649.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!