349-两个数组的交集

  • 用到STL中的set关联式容器

1、注意事项

set容器中元素都是排好顺序的!!

set容器中无重复元素!!

set中查找采用二分查找,查找速率是logn

set中元素操作只需改变指针指向

2、常用命令

set<int>s;

s.find(elem);返回指定元素的位置,如果没找到指定元素则返回s.end()

s.begin();s.end();迭代器的起始位置

s.empty();判断是否为空

3、思路

  • 设置两个迭代器,把第一个数组的元素全放进第一个set容器中(可剔除重复元素)
  • 迭代查找第二个数组中的元素,看是否在第一个set容器中找到,找到了放在第二个set容器中,也可以剔除重复元素
  • 把第二个set容器转化为vector,然后输出!

4、代码实现

 1 class Solution {
 2 public:
 3     vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
 4         set<int>s1;
 5         set<int>s2;
 6         vector<int>rec;
 7         for(int i=0;i<nums1.size();i++){
 8             s1.insert(nums1[i]);
 9         }
10         for(int i=0;i<nums2.size();i++){
11             if(s1.find(nums2[i])!=s1.end()) s2.insert(nums2[i]);
12         }
13         rec.assign(s2.begin(), s2.end());//是把set转化为vector的语句!!!
14         return rec;
15     }
16 };

猜你喜欢

转载自www.cnblogs.com/hehesunshine/p/11643367.html