""" 关键字: 输出结果是唯一,不考虑顺序,这个特征是哈希表的特征,所以输出结果的存放是哈希表。而题目中,是计算两个数组的交集,也不考虑重复元素和顺序,所以用哈希表来存数据。
步骤:
- 把num1的数据放入哈希表中。
- 挨个遍历num2数据,如果它同时在num1中,就加入最后的结果集。
算法复杂度:
- 时间复杂度O(m+n): set的底层实现是hash表,所以插入和in都是O(1),m,n分别是数组的长度,有两个遍历所以是m+n
- 空间复杂度O(1): 常数个变量
测试:
- nums1 = [1,2,2,1], nums2 = [2,2]
- nums1 = [4,9,5], nums2 = [9,4,9,8,4]
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
num1_set = set(nums1)
union_set = set()
for num in nums2:
if num in num1_set:
union_set.add(num)
return union_set