力扣每日一题:两个集合的交集

给定两个数组,编写一个函数来计算它们的交集。
示例 1:

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

示例 2:

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

输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

做本题复习知识点:
1.unordered_set : 这个容器是集合,底层实现是hash。 有四个主要函数:
①.insert()插入元素 ,
②.find()查找元素,返回值是一个迭代器,找到元素后返回元素迭代器,否则返回end()
③.erase()删除元素
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
④.count(num)如果num在集合中则返回1,否则返回0
2.auto迭代
for(auto num : set) for循环后由“:”分为两部分,第一部分是用于迭代的变量,第二部分是被迭代的范围,此处指set集合

AC代码:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> set1,set2;
        vector<int> ans;
        for(int i = 0 ; i < nums1.size() ; i ++) set1.insert(nums1[i]);
        for(int i = 0 ; i < nums2.size() ; i ++) set2.insert(nums2[i]);
        if(set1.size() < set2.size()){
            for(auto num : set1){
                if(set2.count(num)) ans.push_back(num);
            }
        }
        else if(set1.size() >= set2.size()){
            for(auto num : set2){
                if(set1.count(num)) ans.push_back(num);
            }
        }
        return ans;
    }
};
posted @ 2020-11-02 22:11  时光以北  阅读(190)  评论(0编辑  收藏  举报