Problem

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.

https://leetcode.cn/problems/intersection-of-two-arrays/

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

Test Cases

1
2
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
solution_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
import pytest

from solution import Solution


@pytest.mark.parametrize('nums1, nums2, expected', [
([1,2,2,1], [2,2], [2]),
([4,9,5], [9,4,9,8,4], [9,4]),
])
@pytest.mark.parametrize('sol', [Solution()])
def test_solution(sol, nums1, nums2, expected):
res = sol.intersection(nums1, nums2)
assert sorted(res) == sorted(expected)

Thoughts

用集合记录两个数组的数字,求交集即可。

时间复杂度 O(m + n),空间复杂度 O(m + n)

Code

solution.py
1
2
3
4
5
class Solution:
def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:
s1 = set(nums1)
s2 = set(nums2)
return list(s1 & s2)