GoCalf Calf 的自留地 · 昙花一现

349. Intersection of Two Arrays

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

python
class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
solution_test.py下载完整源码
py
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

py
class Solution:
    def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:
        s1 = set(nums1)
        s2 = set(nums2)
        return list(s1 & s2)

评论需要 JavaScript。