题目

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

#### 示例 1:

1
2
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]

示例 2:

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

说明:

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

题解

感觉官方题解不够巧妙,遂写下

思路

  • 建立一个空的哈希表和一个空的列表,列表存放答案
  • 哈希表的键存放nums1的数,值为出现次数(也可以自定义为别的数,只要不是None即可)
  • 遍历nums2,如果nums2的值出现在哈希表的键当中,那么把它放到答案的列表中,同时哈希表的值设为None
  • 返回列表

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
hash_dict = {}
ans = []
for i in nums1:
if hash_dict.get(i) is None:
hash_dict[i] = 1
for j in nums2:
if hash_dict.get(j) is not None:
ans.append(j)
hash_dict[j] = None
return ans