C++实现LeetCode(170.两数之和之三(?,数据结构设计))

这篇文章主要介绍了C++实现LeetCode(170.两数之和之三 – 数据结构设计),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

C++实现LeetCode(170.两数之和之三,?,数据结构设计),久久派带你了解更多相关信息。

[LeetCode] 170. Two Sum III – Data structure design 两数之和之三 – 数据结构设计

Design and implement a TwoSum class. It should support the following operations: add and find.

add - Add the number to an internal data structure.
find - Find if there exists any pair of numbers which sum is equal to the value.

Example 1:

add(1); add(3); add(5);
find(4) -> true
find(7) -> false

Example 2:

add(3); add(1); add(2);
find(3) -> true
find(6) -> false

这道题让我们设计一个 Two Sum 的数据结构,跟 LeetCode 的第一道题 Two Sum 没有什么太大的区别,作为 LeetCode 的首题,Two Sum 的名气不小啊,正所谓平生不会 TwoSum,刷尽 LeetCode 也枉然。记得原来在背单词的时候,总是记得第一个单词是 abandon,结果有些人背来背去还在 abandon,有时候想想刷题其实跟背 GRE 红宝书没啥太大的区别,都是一个熟练功夫,并不需要有多高的天赋,只要下足功夫,都能达到一个很不错的水平,套用一句鸡汤问来激励下吧,“有些时候我们的努力程度根本达不到需要拼天赋的地步”,好了,不闲扯了,来看题吧。不过这题也没啥可讲的,会做 Two Sum 的这题就很简单了,先来看用 HashMap 的解法,把每个数字和其出现的次数建立映射,然后遍历 HashMap,对于每个值,先求出此值和目标值之间的差值t,然后需要分两种情况来看,如果当前值不等于差值t,那么只要 HashMap 中有差值t就返回 True,或者是当差值t等于当前值时,如果此时 HashMap 的映射次数大于1,则表示 HashMap 中还有另一个和当前值相等的数字,二者相加就是目标值,参见代码如下:

解法一:

class TwoSum {public:    void add(int number) {        ++m[number];    }    bool find(int value) {        for (auto a : m) {            int t = value - a.first;            if ((t != a.first && m.count(t)) || (t == a.first && a.second > 1)) {                return true;            }        }        return false;    }private:    unordered_map<int, int> m;};

另一种解法不用 HashMap,而是 unordered_multiset 来做,但是原理和上面一样,参见代码如下:

解法二:

class TwoSum {public:    void add(int number) {        s.insert(number);    }    bool find(int value) {        for (auto a : s) {            int cnt = a == value - a ? 1 : 0;            if (s.count(value - a) > cnt) {                return true;            }        }        return false;    }private:    unordered_multiset<int> s;};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/170

类似题目:

Two Sum

Unique Word Abbreviation

Two Sum IV – Input is a BST

参考资料:

https://leetcode.com/problems/two-sum-iii-data-structure-design/

https://www.zzm8.com/d/file/p/2021080218003213609/2021080218003213610

https://www.zzm8.com/d/file/p/2021080218003313619/2021080218003313620

到此这篇关于C++实现LeetCode(170.两数之和之三 – 数据结构设计)的文章就介绍到这了,更多相关C++实现两数之和之三 – 数据结构设计内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/8997.html

(0)
上一篇 2021-08-02 21:31:30
下一篇 2021-08-02 21:32:02

相关推荐

  • 如何开咖啡店(0基础开咖啡店)

    如何开咖啡店(0基础开咖啡店)阅读时长:3小时推荐指数:适宜人群:有着创业梦想或创业兴趣的年轻人、咖啡爱好者每个打工社畜的内心都装着一个当老板的梦想,每个在忙忙碌碌快速前进的时代中生存的灵魂,都拥有一份慢下来感受生活的诗与远方。90后已经迎

    2021-11-11 热点头条
    00
  • 善良女孩徒步西藏车祸遇难(女网红徒步西藏直播时遇难)

    8月21日,河南姑娘“美美”的生命永远定格在了那片她所热爱的土地上。“一片大地,盖上喜欢的房子,种上粮食瓜果蔬菜,鸡鸭鹅奶牛,救助流浪狗,还有敬老院,单纯不违心,这是我的理想。”7月3日,在徒步西藏的第60天,抖音博主“河南美美徒步西藏

    2021-12-15
    00
  • 滴滴上线试行司机收入报告(一键对比司乘价格)

    在不同的城市中都不担心打不到车了,随着网约车的受欢迎,不同的网约车平台有很多,只要有手机就能够打车的。滴滴就是大家熟知的打车平台了,近日有消息

    2021-08-16
    00
  • 26名女运动员获三八红旗手称号(三八红旗手属于什么奖励)

    据最新消息报道全国妇联授予26名女运动员获三八红旗手称号,其中的女运动员就有大家熟知的杨倩、陈梦、孙颖莎等运动员,她们在东京奥运会中为国争光,取得了非常不错的成绩,那么很多网友就比较关心三八红旗手属于什么奖励,那么接下来大家就随久久派小编一起了解看看~26名女运动员获三八红旗手称号据中华全国妇女联合会官方微信11日消息,全国妇联授予杨倩等26名女运动员全国

    2021-08-11
    00
  • 新冠病毒核酸检测再次降价(核酸检测价格各省一览表)

    全国各地核酸检测的价格都不一样,有的地方一百多,有的地方几十块钱,根据最新资讯报道,新冠病毒核酸检测再次降价,单人单检不超过60块钱,下面大家就跟久久派小编来了解一下核酸检测价格各省一览表吧!新冠病毒核酸检测再次降价据国家医保局官微消息,新冠病毒核酸检测是疫

    2021-09-18
    40
  • 马斯克又成了?SpaceX总裁:星链全球潜在用户已达60万

    2015年1月,SpaceX创始人马斯克宣布了卫星互联网服务项目。该项目旨在为世界各地的用户提供高速互联网接入,特别是在农村和偏远地区。近日,据媒体报道,SpaceX首席运营官兼总裁格温&middot;肖

    2021-08-23
    00

发表回复

登录后才能评论