Problem Statement
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.
Examples
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, num2.length ≤ 1000
- 0 ≤ nums1[i], nums2[i] ≤1000
Different Approaches
Approach 1: Sorting and Two Pointers
Intuition:
If nums1
and nums2
are sorted, we can use a two pointers approach to find elements that appear in both arrays. Initialize one pointer for each array that starts at the smallest element.
If the numbers at both pointers are the same, add the number to a set stores integers that appear in both arrays. Then, increase both pointers by 1, since the smallest element is already processed.