CLOSE

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.