LeetCode 349.两个数组的交集

题目

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

说明:

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

题目链接

示例

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

题目分析

官方题解说用集合是幼稚的方法,然后自己给出了一个调api的方法,所以我在这里用幼稚的方法实现一遍。

需要用到两个集合,先遍历第一个数组,把元素都插入集合中:

set<int> s1;
for (auto temp : nums1){
    s1.insert(temp);
}

然后遍历第二个数组,检查第二个数组中的元素是否在集合1中,如果在集合1中,将其插入集合2:

set<int> s2;
for (auto temp : nums2){
    if (s1.count(temp)) s2.insert(temp);
}

这一步是为了去重。

最后再遍历集合2,将其元素插入结果数组中:

vector<int> res;
for (auto temp: s2) res.push_back(temp);

C++有更方便的插入方式:

vector<int> res(s2.begin(), s2.end());

题目解答

class Solution {
public:
    set<int> s1, s2;

    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        for (auto temp : nums1) s1.insert(temp);
        for (auto temp : nums2){
            if (s1.count(temp)) s2.insert(temp);
        }
        vector<int> res(s2.begin(), s2.end());
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。