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

例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2]. 提示:

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

_注意事项:

注意~此题没有说是有序数组!!!

算法一:

暴力解法,遍历,枚举,最容易想到的是用 A 数组里面的数去匹配 B数组里面的数,即用两 个for循环即可解决问题,假设两个数组的大小都为 n,那么时间复杂度为O(n²)。

算法二:

用一个C数组记录 A数组中数字出现的次数,再统计 B数组中数字出现的次数,C数组 中交集数字的出现次数必定会增加,做好标记,返回交集。时间复杂度为O(n)。 算法三: 对两个数组分别排序,数组排序的算法复杂度最低可以是 O(nlogn),那么我们只用找到排 好序数组的交集即可

算法四:

由算法二,我们可以很容易引出了算法四,哈希表思想,也就是将数组 A 哈希到哈希表中, 然后继续将数组B哈希到哈希表中,如果发生哈希碰撞则统计加 1,最后可以得出数组的交 集。时间复杂度也就是哈希所有元素的复杂度O(n)。