力扣-349. 两个数组的交集

文章目录

力扣题目

给定两个数组 nums1 和 nums2 ,返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]

输出:[2]

示例 2:

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

输出:[9,4]

解释:[4,9] 也是可通过的

代码

思路分析:两种实现方式原理是一样的都是运行set容器或map容器插入的值唯一的特性。使用set容器实现起来更加简洁。

C++实现(set容器)

cpp 复制代码
class Solution 
{
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
    {
        set<int>s(nums1.begin(), nums1.end());/*拷贝构造*/
        set<int>sTemp;/*存储交集元素*/
        for(int i = 0; i < nums2.size(); i++)
        {
            set<int>::iterator pos = s.find(nums2[i]);
            if(pos != s.end())/*交集的元素*/
            {
                sTemp.insert(*pos);
            }
        }
        return vector<int>(sTemp.begin(), sTemp.end());
    }
};

C++实现(map容器)

cpp 复制代码
class Solution 
{
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
    {
        vector<int>arr;/*存储交集的元素*/
        map<int, int>m1;
        map<int, int>temp;
        for(int i = 0; i < nums1.size(); i++)
        {
            m1.insert(make_pair(nums1[i], i));
        }

        for(int i = 0; i < nums2.size(); i++)
        {
            map<int, int>::iterator pos = m1.find(nums2[i]);
            if(pos != m1.end())/*交集的元素*/
            {
                temp.insert(make_pair(pos->first, pos->second));
            }
        }

        for(map<int, int>::iterator it = temp.begin(); it != temp.end(); it++)
        {
            arr.push_back(it->first);
        }

        return arr;
    }
};
相关推荐
仰泳的熊猫2 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
Thera7776 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
君义_noip7 小时前
信息学奥赛一本通 1952:【10NOIP普及组】三国游戏 | 洛谷 P1199 [NOIP 2010 普及组] 三国游戏
c++·信息学奥赛·csp-s
旖-旎8 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
顶点多余8 小时前
使用C/C++语言链接Mysql详解
数据库·c++·mysql
汉克老师8 小时前
GESP2026年3月认证C++四级( 第二部分判断题(1-10))
c++·指针·函数重载·文件操作·数组·gesp4级·gesp四级
khddvbe9 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
wWYy.10 小时前
STL:list
开发语言·c++
小比特_蓝光10 小时前
vector模拟实现
c++
咱就是说不配啊11 小时前
3.19打卡day33
数据结构·c++·算法