题解 | #两个数组的交集#

两个数组的交集

https://www.nowcoder.com/practice/56ea71d1f4e94de2aaec10e985874cce

//这一题使用了哈希表的思路来找到重复元素。
#include <unordered_set>
#include <vector>
class Solution {

  private:
    unordered_set<int>s1;
    unordered_set<int>s2;
  public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        s1.clear();
        s2.clear();
        vector<int>result;
        for (const int num : nums1) { //先遍历nums1,记录它有的元素是哪些
            if (s1.count(num) ==
                    0) { //如果nums1中有元素尚未被添加,那就添加。
                s1.emplace(num);
            }
        }
        for (const int num :
                nums2) { //遍历nums2,看看它里面的哪些元素nums1里已经有了
            if (s2.count(num) == 1)//如果是nums2中的重复元素,直接跳过,因为之前肯定已经处理过了。
            {
                continue;
            } 
            else//如果nums2里是第一次见到这个元素
            {
                if (s1.count(num) == 1) //如果这个元素nums1里恰好存在,那就往result里加入。
                {
                    result.emplace_back(num);
                }
                s2.emplace(num);//不管nums1里存在与否,s2都得记录 。
            }
        }
        return result;
    }
};

全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务