Go语言题解LeetCode888公平糖果交换示例详解

 更新时间:2022年12月28日 14:13:12   作者:刘09k11  
这篇文章主要为大家介绍了Go语言题解LeetCode888公平糖果交换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一 描述

888. 公平的糖果交换 - 力扣(LeetCode) (leetcode-cn.com)

爱丽丝和鲍勃拥有不同总数量的糖果。给你两个数组 aliceSizesbobSizesaliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃拥有的第 j 盒糖果中的糖果数量。

两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果。一个人拥有的糖果总数量是他们每盒糖果数量的总和。

返回一个整数数组 answer,其中 answer[0] 是爱丽丝必须交换的糖果盒中的糖果的数目,answer[1] 是鲍勃必须交换的糖果盒中的糖果的数目。如果存在多个答案,你可以返回其中 任何一个 。题目测试用例保证存在与输入对应的答案。

示例 1:

输入:aliceSizes = [1,1], bobSizes = [2,2]
输出:[1,2]

示例 2:

输入:aliceSizes = [1,2], bobSizes = [2,3]
输出:[1,2]

示例 3:

输入:aliceSizes = [2], bobSizes = [1,3]
输出:[2,3]

示例 4:

输入:aliceSizes = [1,2,5], bobSizes = [2,4]
输出:[5,4]

提示:

1 <= aliceSizes.length, bobSizes.length <= 10^4

1 <= aliceSizes[i], bobSizes[j] <= 10^5

爱丽丝和鲍勃的糖果总数量不同。

题目数据保证对于给定的输入至少存在一个有效答案。

二 分析

计算若A与B相同时,A所需要的糖果大小,遍历B,寻找该糖果

  • 首先计算A与B的糖果总和
  • A与B相等所需要的糖果差值是(sum_B-sum_a)/2
  • 构建哈希表,哈希表为A的每个元素,加上2的差值
  • 遍历B,寻找B中是否有某一糖果与哈希表某一数值相等
  • 输出数值

三 答案

class Solution {
public:
    vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
        int sum_A=0;//1 首先计算A与B的糖果总和
        int sum_B=0;
        for(auto a:A)
        {
            sum_A=sum_A+a;
        }
        for(auto b:B)
        {
            sum_B=sum_B+b;
        }
        unordered_map<int,int> map;//2 A与B相等所需要的糖果差值是(sum_B-sum_a)/2
        for(auto a:A)//3 构建哈希表,哈希表为A的每个元素,加上2的差值
        {
            map[a+(sum_B-sum_A)/2];
        }
        for(auto b:B)//4 遍历B,寻找B中是否有某一糖果与哈希表某一数值相等
        {
            if(map.find(b)!=map.end())
            {
                return{b+(sum_A-sum_B)/2,b};//5 输出数值
            }
        }
        return {};
    }
};

以上就是Go语言题解LeetCode888公平糖果交换示例详解的详细内容,更多关于Go题解公平糖果交换的资料请关注脚本之家其它相关文章!

相关文章

  • golang cache带索引超时缓存库实战示例

    golang cache带索引超时缓存库实战示例

    这篇文章主要为大家介绍了golang cache带索引超时缓存库实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Go语言实战之实现均衡器功能

    Go语言实战之实现均衡器功能

    这篇文章主要为大家详细介绍了如何利用Golang 实现一个简单的流浪均衡器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-04-04
  • 浅谈Golang如何使用Viper进行配置管理

    浅谈Golang如何使用Viper进行配置管理

    在Golang生态中,Viper是一个不错的开源配置管理框架,这篇文章主要为大家介绍了Golang如何使用Viper进行配置管理,需要的可以参考一下
    2023-06-06
  • 解析go语言调用约定多返回值实现原理

    解析go语言调用约定多返回值实现原理

    这篇文章主要为大家介绍了解析go语言调用约定多返回值实现原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Go语言入门Go Web Fiber框架快速了解

    Go语言入门Go Web Fiber框架快速了解

    这篇文章主要为大家介绍了Go语言入门Go Web Fiber框架的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Golang使用gin框架实现一个完整的聊天室功能

    Golang使用gin框架实现一个完整的聊天室功能

    由于我们项目的需要,我就研究了一下关于websocket的相关内容,去实现一个聊天室的功能,经过几天的探索,现在使用Gin框架实现了一个完整的聊天室+消息实时通知系统,感兴趣的小伙伴欢迎阅读本文
    2023-08-08
  • golang xorm日志写入文件中的操作

    golang xorm日志写入文件中的操作

    这篇文章主要介绍了golang xorm日志写入文件中的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang defer延迟语句的实现

    Golang defer延迟语句的实现

    defer拥有注册延迟调用的机制,本文主要介绍了Golang defer延迟语句的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Go语言的互斥锁的详细使用

    Go语言的互斥锁的详细使用

    本文主要介绍了Go语言的互斥锁的详细使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 深入了解Golang中reflect反射基本原理

    深入了解Golang中reflect反射基本原理

    反射是这样一种机制,它是可以让我们在程序运行时(runtime)访问、检测和修改对象本身状态或行为的一种能力。本文主要带大家来看看Golang中reflect反射基本原理,需要的可以参考一下
    2023-01-01

最新评论