博客
关于我
【leetcode】349. 两个数组的交集(intersection-of-two-arrays)(哈希)[简单]
阅读量:562 次
发布时间:2019-03-10

本文共 1019 字,大约阅读时间需要 3 分钟。

交集函数实现

给定两个数组,编写一个函数来计算它们的交集。以下是实现思路和代码。

思路

  • 问题分析:我们需要找到两个数组中共同存在的元素。
  • 选择数据结构:使用unordered_set来存储元素,利用快速查找和插入的特性提高效率。
  • 算法步骤
    • 遍历第一个数组,将所有元素加入集合中。
    • 遍历第二个数组,检查每个元素是否存在于第一个集合中。
    • 如果元素存在,则将其加入交集集合。
  • 结果处理:将交集集合中的元素按顺序存储到结果数组中。
  • 代码实现

    #include 
    #include
    using namespace std;vector
    intersection(vector
    & nums1, vector
    & nums2) { unordered_set
    unorset_nums1; // 遍历第一个数组,记录所有元素 for (int x : nums1) { if (unorset_nums1.find(x) == unorset_nums1.end()) { unorset_nums1.insert(x); } } unordered_set
    intersection; // 遍历第二个数组,寻找交集 for (int y : nums2) { if (unorset_nums1.find(y) != unorset_nums1.end() && intersection.find(y) == intersection.end()) { intersection.insert(y); } } vector
    ans; for (int z : intersection) { ans.push_back(z); } return ans;}

    时间复杂度

    • 时间复杂度:O(n + m),其中n和m分别是两个数组的长度。
    • 空间复杂度:O(min(n, m)),用于存储交集结果。

    总结

    通过上述方法,我们可以高效地找到两个数组的交集。该算法利用了集合的快速查找特性,确保了时间复杂度的优化。

    转载地址:http://kgbvz.baihongyu.com/

    你可能感兴趣的文章