zoukankan      html  css  js  c++  java
  • 力扣每日一题:两个集合的交集

    给定两个数组,编写一个函数来计算它们的交集。
    示例 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;
        }
    };
    
  • 相关阅读:
    【转】return 使用示例
    java基础_二维数组的行和列
    新版SQL授权用户时报错 near 'IDENTIFIED BY '密码' with grant option' at line 1
    GO kafka sarama 生产者 消费者 简单 实现
    Windows 安装kafka
    windows 连接nsq
    reflect: call of reflect.Value.NumField on ptr Value
    django 数据库 mysql 事务 处理
    python 类的继承
    python 中 insert 返回 None
  • 原文地址:https://www.cnblogs.com/ZhaoHaoFei/p/13916851.html
Copyright © 2011-2022 走看看