zoukankan      html  css  js  c++  java
  • 1594. 公平的糖果交换

    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
  • 相关阅读:
    c语言关键字-static
    c语言关键字-const
    c语言32个关键字
    宏定义#define详解
    c程序启动终止过程及exit(),_exit(),atexit()函数区别
    c语言编译过程和头文件<>与""的区别
    职业经理人-以柔克刚的柔性领导力
    职业经理人-如何管理好你的老板
    职业经理人-带人要带心
    职业经理人-怎样能批评了下属还让他很高兴
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12775649.html
Copyright © 2011-2022 走看看