代码很简单:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
# 使用哈希表存储一个数组中的所有元素
set1 = set(nums1)
set2 = set(nums2)
set3 = set1&set2
return list(set3)
集合:无序的, 不可随机访问的, 不可重复的元素集合
时间复杂度分析:
- 首先,构建集合 `
set1
` 和 `set2
` 分别需要遍历 `nums1
` 和 `nums2
`,时间复杂度为 O(n1 + n2),其中 n1 和 n2 分别是 `nums1
` 和 `nums2
` 的长度。 - 执行集合的交集操作 `
set1 & set2
` 的时间复杂度为 O(min(n1, n2)),其中 n1 和 n2 分别是 `set1
` 和 `set2
` 的长度。 - 最后,将交集结果转换为列表需要 O(k) 的时间,其中 k 是交集结果的长度。
综上所述,代码的总时间复杂度为 O(n1 + n2 + min(n1, n2) + k)。
空间复杂度分析:
- 创建集合 `
set1
` 和 `set2
` 分别需要 O(n1) 和 O(n2) 的空间,其中 n1 和 n2 分别是 `nums1
` 和 `nums2
` 的长度。 - 创建集合 `
set3
` 存储交集结果需要 O(min(n1, n2)) 的空间。 - 将交集结果转换为列表需要 O(k) 的空间,其中 k 是交集结果的长度。
综上所述,代码的总空间复杂度为 O(n1 + n2 + min(n1, n2) + k)。