给定两个数组,写一个函数来计算它们的交集。
例子: 给定 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)。
I'm so cool. Please give me money.
- 本文链接:https://www.tjzzz.com/posts/c7278f07.html
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。