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题解公平糖果交换的资料请关注脚本之家其它相关文章!

相关文章

  • GO接收GET/POST参数及发送GET/POST请求的实例详解

    GO接收GET/POST参数及发送GET/POST请求的实例详解

    这篇文章主要介绍了GO接收GET/POST参数及发送GET/POST请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Go gRPC服务客户端流式RPC教程

    Go gRPC服务客户端流式RPC教程

    这篇文章主要为大家介绍了Go gRPC服务客户端流式RPC教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go编译32位GNU静态链接库的方法

    Go编译32位GNU静态链接库的方法

    Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib。这篇文章给大家介绍Go编译32位GNU静态链接库的方法,感兴趣的朋友一起看看吧
    2020-05-05
  • gorm golang 并发连接数据库报错的解决方法

    gorm golang 并发连接数据库报错的解决方法

    今天小编就为大家分享一篇gorm golang 并发连接数据库报错的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Go语言中slice作为参数传递时遇到的一些“坑”

    Go语言中slice作为参数传递时遇到的一些“坑”

    这篇文章主要给大家介绍了关于Go语言中slice作为参数传递时遇到的一些“坑”,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 一文带你了解Golang中的缓冲区Buffer

    一文带你了解Golang中的缓冲区Buffer

    作为一种常见的数据结构,缓冲区(Buffer)在计算机科学中有着广泛的应用。这篇文章将详细介绍 Go 中 Buffer 的用法,从多个方面介绍其特性和应用场景,需要的可以参考一下
    2023-05-05
  • Golang多线程爬虫高效抓取大量数据的利器

    Golang多线程爬虫高效抓取大量数据的利器

    Golang多线程爬虫是一种高效抓取大量数据的利器。Golang语言天生支持并发和多线程,可以轻松实现多线程爬虫的开发。通过使用Golang的协程和通道,可以实现爬虫的高效并发抓取、数据处理和存储
    2023-05-05
  • Golang使用singleflight解决并发重复请求

    Golang使用singleflight解决并发重复请求

    高并发的场景下,经常会出现并发重复请求资源的情况,singleflight是golang内置的一个包,这个包提供了对重复函数调用的抑制功能,所以下面我们就来看看如何使用它解决并发重复请求吧
    2023-08-08
  • Go设计模式之原型模式图文详解

    Go设计模式之原型模式图文详解

    原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类,本文将通过图片和文字让大家可以详细的了解Go的原型模式,感兴趣的通过跟着小编一起来看看吧
    2023-07-07
  • Go语言resty http包调用jenkins api实例

    Go语言resty http包调用jenkins api实例

    这篇文章主要为大家介绍了Go语言resty http包调用jenkins api实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06

最新评论