• 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
  • 相关阅读:
    读懂Netty的高性能架构之道
    大型网站架构演变和知识体系(转载)
    SAX,功能强大的 API
    防雪崩利器:熔断器 Hystrix 的原理与使用
    分布式系统设计系列 -- 基本原理及高可用策略
    分布式系统的事务处理
    分布式服务框架之服务化最佳实践
    深入理解 Java 虚拟机:JVM 高级特性与最佳实践
    内存屏障
    IntelliJ IDEA 2016 破解旗舰版
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12775649.html
Copyright © 2020-2023  润新知