- 用到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 };