力扣-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;
    }
};
相关推荐
ziguo11224 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
白色冰激凌5 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
光头闪亮亮5 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮5 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
_wyt0016 小时前
洛谷 P7912 [CSP-J 2021] 小熊的果篮 题解
c++·队列
choumin7 小时前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
code_pgf7 小时前
C/C++ 常用容器功能汇总
c语言·开发语言·c++
王维同学8 小时前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
小保CPP8 小时前
OpenCV C++基于模糊数学的图像修复
c++·人工智能·opencv·计算机视觉
Carlgood-Minecraft9 小时前
随机分位系统破解版 (BPS)Version-B4.2
c++