[刷题] 349 Intersection of Two Arrays

查找问题

  • 查找有无(只有键)
    • 元素'a'是否存在
    • set(集合)
  • 查找对应关系(键值对应)
    • 元素'a'出现了几次
    • map(字典)
  • set和map的底层实现是红黑树
  • 常见操作
    • insert()
    • find()
    • erase()
    • change(map):改变某个键对应的值

要求

  • 给定两个数组nums,求两个数组的公共元素
  • 输出结果中每个元素唯一
  • 不考虑输出结果的顺序

举例

  • nums1=[1,2,2,1]
  • nums2=[2,2]
  • 结果:[2]

实现

  • 将公共元素放入公共的set中
复制代码
 1 class Solution{
 2 public:
 3     vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
 4         
 5         set<int> record;
 6         for(int i = 0 ; i < nums1.size() ; i ++ )
 7             record.insert( nums1[i] );
 8         
 9         set<int> resultSet;
10         for( int i = 0 ; i < nums2.size() ; i ++ )
11             if( record.find(nums2[i]) != record.end())
12                 resultSet.insert(nums2[i]);
13                 
14         vector<int> resultVector;
15         for( set<int>::iterator iter = resultSet.begin() ; iter != resultSet.end() ; iter ++)
16             resultVector.push_back( *iter );
17         
18         return resultVector;
19     }
20 };
View Code
复制代码
  • 简单写法
复制代码
 1 class Solution{
 2 public:
 3     vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
 4         
 5         set<int> record( nums1.begin(), nums1.end());
 6         
 7         set<int> resultSet;
 8         for( int i = 0 ; i < nums2.size() ; i ++ )
 9             if( record.find(nums2[i]) != record.end())
10                 resultSet.insert(nums2[i]);
11                 
12         return vector<int> resultVector(resultSet.begin(),resultSet.end());
13         
14     }
15 };
View Code
复制代码

 参考

posted @   cxc1357  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)
点击右上角即可分享
微信分享提示