leetcode-349-两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

说明:

输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

来源:力扣(LeetCode)
链接:leetcode-349-两个数组的交集

思路:
1.先利用set集合将数组元素去重
2.利用迭代器,遍历其中一个set,如果元素在另一个set中,则保存下来。

代码:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int>set1(nums1.begin(),nums1.end());set<int>set2(nums2.begin(),nums2.end());vector<int>ret;set<int>::iterator iter;//建立一个set<int>集合类型的迭代器for(iter=set1.begin();iter!=set1.end();iter++){if(find(set2.begin(),set2.end(),*iter)!=set2.end()){ret.push_back(*iter);}}return ret;}
};

可以发现,貌似用数组做哈希表可以解决这道题目,把nums1的元素,映射到哈希数组的下表上,然后在遍历nums2的时候,判断是否出现过就可以了。

但是要注意,「使用数据来做哈希的题目,都限制了数值的大小,例如哈希表:可以拿数组当哈希表来用,但哈希值不要太大题目中只有小写字母,或者数值大小在[0- 10000] 之内等等。」

而这道题目没有限制数值的大小,就无法使用数组来做哈希表了。

「而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。」
此时就要使用另一种结构体了,set ,关于set,C++ 给提供了如下三种可用的数据结构:

std::set
std::multiset
std::unordered_set
std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> set1(nums1.begin(),nums1.end());unordered_set<int> result_set;for(auto num: nums2){if(set1.find(num) != set1.end())result_set.insert(num);}return vector<int>(result_set.begin(), result_set.end());}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leansoft再发招贤令:面试官徐磊有话讲 | IDCF

&#xff08;图片来源于网络&#xff09;2020是Leansoft成立的第五年&#xff0c;凭借专业的服务及实施能力&#xff0c;逐渐成长为国内唯一的端到端专业DevOps实施服务公司。Leansoft是一家怎样的公司呢&#xff1f;准确地说&#xff0c;我们其实是国内唯一一家提供端到端的De…

问题 B: 数塔问题

题目描述 有如下所示的数塔&#xff0c;要求从顶层走到底层&#xff0c;若每一步只能走到相邻的结点&#xff0c;则经过的结点的数字之和最大是多少&#xff1f; 输入 第一行是一个整数N(1 < N < 20)&#xff0c;表示数塔的高度&#xff0c;接下来用N个数字表示数塔&a…

leetcode-345-翻转字符串中的元音字母

编写一个函数&#xff0c;以字符串作为输入&#xff0c;反转该字符串中的元音字母。 示例 1&#xff1a; 输入&#xff1a;“hello” 输出&#xff1a;“holle” 示例 2&#xff1a; 输入&#xff1a;“leetcode” 输出&#xff1a;“leotcede” 来源&#xff1a;力扣&…

e盾服务端源码_gRPC服务注册发现及负载均衡的实现方案与源码解析

今天聊一下gRPC的服务发现和负载均衡原理相关的话题&#xff0c;不同于Nginx、Lvs或者F5这些服务端的负载均衡策略&#xff0c;gRPC采用的是客户端实现的负载均衡。什么意思呢&#xff0c;对于使用服务端负载均衡的系统&#xff0c;客户端会首先访问负载均衡的域名/IP&#xff…

堆问题(最小堆变最大堆,堆删除,中序遍历)

2-6 设最小堆&#xff08;小根堆&#xff09;的层序遍历结果为 {8, 38, 25, 58, 52, 82, 70, 60}。用线性时间复杂度的算法将该堆调整为最大堆&#xff08;大根堆&#xff09;&#xff0c;然后连续执行两次删除最大元素操作&#xff08;DeleteMax&#xff09;。则该树的中序遍历…

推荐一款.NET Core开源爬虫神器:DotnetSpider

没有爬虫就没有互联网&#xff01;爬虫的意义在于采集大批量数据&#xff0c;然后基于此进行加工/分析&#xff0c;做更有意义的事情。谷歌&#xff0c;百度&#xff0c;今日头条&#xff0c;天眼查都离不开爬虫。去开源中国和Github查询C#的爬虫项目&#xff0c;仅有几个非常简…

Excel学习使用教程

1.Excel的保存与加密 加密&#xff1a; 我设置的密码&#xff1a;517485

python数据导入hive_Python操作HIve,将数据插入到Mysql

Python操作HIve&#xff0c;将数据插入到Mysql import sys from hive_service import ThriftHive from hive_service.ttypes import HiveServerException from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport from thrif…

问题 D: 二叉树求高度

题目描述 已知一棵二叉树用邻接表结构存储&#xff0c;求这棵树的高度。例&#xff1a;如图二叉树的数据文件的数据格式如下: 输入 第一行n为二叉树的结点个树&#xff0c;n≤100&#xff1b;以下第一列数据是各结点的值&#xff0c;第二列数据是左儿子结点编号&#xff0c;第…

.Net Core in Docker - 使用阿里云Codepipeline及阿里云容器镜像服务实现持续集成(CI)...

前面已经介绍过了 .Net Core In Docker 在容器内编译并发布的内容。但是每次通过 SSH 链接到服务器敲命令&#xff0c;运行脚本也是挺麻烦的一件事。程序员是最懒的&#xff0c;能让电脑解决的问题绝不手动解决&#xff0c;如果当我们push一次代码后自动build代码&#xff0c;自…

leetcode-445. 两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 进阶&#xff1a; 如果输入链表不能修改该如何处理&#xff1f;换…

mysql 序列_MySql中序列的应用和总结

Mysql中的序列主要用于主键&#xff0c;主键是递增的字段&#xff0c;不可重复。Mysql与Oracle不同的是&#xff0c;它不支持原生态的sequence&#xff0c;需要用表和函数的组合来实现类似序列的功能。1.首先创建序列的主表/*2.其次创建如下三个函数&#xff0c;它们的功能分别…

汉诺塔问题详细解析zufeoj

汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重…

靠刷算法题,真的可以刷进大厂吗?

我一直不知道我在大家心目中的定位是什么&#xff0c;但我内心其实是把自己定义为一个『工具人』的。可能是因为我自己本身就是程序员&#xff0c;所以更能理解程序员的不易吧。所以&#xff0c;我尽量不写水文&#xff0c;只分享干货。就是希望大家看了能够有所收获&#xff0…

PTA 7-3 地铁一日游 (30 分)

森森喜欢坐地铁。这个假期&#xff0c;他终于来到了传说中的地铁之城——魔都&#xff0c;打算好好过一把坐地铁的瘾&#xff01; 魔都地铁的计价规则是&#xff1a;起步价 2 元&#xff0c;出发站与到达站的最短距离&#xff08;即计费距离&#xff09;每 K 公里增加 1 元车费…

leetcode--912--排序数组

给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,2,5] 提示&#xff1a; 1 < nums.leng…

java 判断object类型_Java 类继承机制

封装、继承、多态是面向对象的三大特征&#xff0c;“继承”最主要的目的是为了实现代码的可复用性。通过父类与子类的继承关系&#xff0c;子类继承了父类的成员函数和成员变量&#xff0c;提高了代码的重复利用率。同时&#xff0c;子类也可以扩展自己特有的成员&#xff0c;…

一个情怀引发的生产事故(续)

接上一篇博文&#xff0c;用Roslyn动态编译C#语句片段&#xff0c;情怀了一把&#xff0c;但内存会飙升&#xff0c;执行速度也奇慢&#xff0c;这条路走不通&#xff0c;回归正道&#xff0c;说起脚本&#xff0c;Lua是常用的手段之一&#xff0c;那就看看NLua怎么样&#xff…

c++的unique函数

在STL中unique函数是一个去重函数&#xff0c; unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除&#xff0c;是把重复的元素移到后面去了&#xff0c;然后依然保存到了原数组中&#xff0c;然后 返回去重后最后一个元素的地址&#xff0c;因为un…

用户登录查全表好还是用用户名好_外贸人/货代人不要为海运难过了:请看如何查运价和调配舱位解决缺箱!...

最近很多外贸人/货代人都被海运伤透了心&#xff0c;不仅价格上涨&#xff0c;还经常没舱位或缺柜子&#xff01;整个人的心态都不好了。其实呢运价上涨这个大环境趋势&#xff0c;我们也无法改变。但是没舱位和缺柜子是属于流动性的&#xff0c;只要不死盯一家船公司还是可以解…