[LeetCode] 349、两个数组的交集

题目描述

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

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

解题思路

这算是一个比较综合的题,有多种思路可以解决此类型的题。(相似题目:350、 两个数组的交集 II

  • 两个unordered_setset去重 + 哈希表实现O(1)查找。
  • 排序 + 双指针:先对两个数组排序,然后指定两个指针分别指向两个数组的首元素,然后依次向后遍历比较。
  • 排序 + 二分:先对一个数组排序,然后对另一个数组中的每个元素,在已排序的数组中进行二分查找。

补充:各种算法模板

参考代码

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set uset1(nums1.begin(), nums1.end());
        unordered_set uset2(nums2.begin(), nums2.end());
        
        vector<int> res;
        for(auto num: uset1){  // 其实这里最好选个短的uset遍历
            if(uset2.find(num) != uset2.end())
                res.push_back(num);
        }
        return res;
    }
    
};
发布了390 篇原创文章 · 获赞 576 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/ft_sunshine/article/details/103945708