c++如何解决两个数组的交集问题
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要为大家展示了"c++如何解决两个数组的交集问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"c++如何解决两个数组的交集问题"这篇文章吧。一、
千家信息网最后更新 2026年10月31日c++如何解决两个数组的交集问题
这篇文章主要为大家展示了"c++如何解决两个数组的交集问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"c++如何解决两个数组的交集问题"这篇文章吧。
一、题目描述
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。
二、解题思路
(1) 哈希表查找
解题思路:
用哈希表记录一个数组中每个元素出现的次数,myMap{元素:元素出现次数}
遍历另一个数组,当哈希表中存在当前元素时,则对应元素的计数减1,并将该元素存入res中。
C++实现如下:
class Solution { public:vector intersect(vector& nums1, vector& nums2) { if(nums1.empty() || nums2.empty()) return{ };// 哈希表记录集合中每个元素出现的次数unordered_map myMap;for( auto &num : nums1 ) myMap[num]++; vector res;// 遍历数组2for( int i = 0; i < nums2.size(); ++i ){ // 判断数组2和集合1是否有公共元素if( myMap.count(nums2[i]) ){ // 找到后,则对应的元素次数减1if( myMap[nums2[i]] > 0 )res.emplace_back(nums2[i]);// 减少集合1中该数的次数myMap[nums2[i]]--;}}return res;}}; 运行结果:
复杂度分析:
时间复杂度:使用了两个for()循环,且是前后关系,因此整体的时间复杂度是O(n+m),其中 m 和 n 分别是两个数组的长度
空间复杂度:新定义了一个集合myMap来存储数组nums1中的元素,所以空间复杂度也是O(n)或O(m)
(2) 排序+双指针
解题思路:
首先对两个数组进行排序,然后使用两个指针遍历两个数组
初始时,两个指针分别指向两个数组的头部,每次比较两个指针指向的两个数组中的数字
如果两个数字不相等,则将指向较小数字的指针右移一位,如果两个数字相等,将该数字添加到答案,并将两个指针都右移一位。
当至少有一个指针超出数组范围时,遍历结束。
C++实现如下:
class Solution { public:vector intersect(vector& nums1, vector& nums2) { //排序sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());//获取数组长度int len1 = nums1.size();int len2 = nums2.size();//初始指针int index1=0, index2=0;vector res;while(index1 nums2[index2])index2++;//如果元素值大小相同,则双指针都向后移动一位,且将当前值存入reselse{ res.push_back(nums1[index1]);index1++;index2++;}}return res;}}; 运行结果:
复杂度分析:
时间复杂度:O(mlogm+nlogn),其中 m 和 n 分别是两个数组的长度。对两个数组进行排序的时间复杂度是 O(mlogm+nlogn),遍历两个数组的时间复杂度是 O(m+n),因此总时间复杂度是 O(mlogm+nlogn)。
空间复杂度:除了输出的数组res,没有创建额外的中间数组,空间复杂度为O(1)
以上是"c++如何解决两个数组的交集问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组
两个
元素
复杂
复杂度
指针
时间
次数
数字
输出
交集
空间
结果
哈希
排序
问题
c++
内容
思路
指向
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网科技公司经营范围
互联网科技公司起名
互联网科技工作委员会主任
鸠鸠互联网科技
没上市的科技互联网公司
互联网络科技有限公司
互联网金融 金融科技
互联网金融 科技金融
互联网科技革命
赫美联合互联网科技
猫创互联网科技
深圳市运趣互联网科技有限公司
互联网教育科技公司vipkid
互联网科技寓意
坤平互联网科技
电子科技大学互联网创业大赛
互联网硬科技公司
北京品多多互联网科技有限公司
利用互联网等科技手段
互联网科技股午盘股票涨跌
深圳前海聚择互联网科技有限公司
南山科技园互联网公司有哪些
搜狐科技互联网
从那以后互联网科技有限公司
上海同邻互联网科技有限公司规模
中国新注册互联网科技
云南互联网科技学费
深圳互联网科技园地址
广州全民伙伴互联网科技有限公司