Find the Difference of Two Arrays

Easy Hash Maps

Problem

Given two integer arrays nums1 and nums2, return a list answer of size 2 where answer[0] is a list of all distinct integers in nums1 which are not present in nums2 and answer[1] is a list of all distinct integers in nums2 which are not present in nums1.

  • 1 ≤ nums1.length, nums2.length ≤ 1000
  • −1000 ≤ nums1[i], nums2[i] ≤ 1000

Example

Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]

The distinct integers in nums1 not in nums2 are 1 and 3. The distinct integers in nums2 not in nums1 are 4 and 6. The algorithm converts both arrays to sets to remove duplicates and then computes the set difference in both directions. The result is converted back to lists for the final output.

Approach

Straightforward Solution

A naive approach would iterate through each array and check for membership in the other array using nested loops, resulting in O(n*m) time complexity, which is inefficient for larger inputs.

Core Observation

The problem fundamentally asks for the distinct elements exclusive to each array. Sets naturally represent collections of unique elements and support efficient difference operations, making them the ideal data structure.

Path to Optimal

Recognizing that the problem is about unique elements and membership, converting arrays to sets allows O(1) average-time membership checks. Using set difference operations directly computes the exclusive elements in O(n + m) time, a significant improvement over nested loops.

Optimal Approach

Preview

Convert both input arrays to sets to remove duplicates. Compute the difference set1 - set2 to find elements unique to nums1, and set2 - set1 for elements unique to nums2…

Full step-by-step walkthrough on Pro

Want the full reasoning chain?

Unlock the complete walkthrough, line-by-line analysis, and recall drill.

Unlock Pro

Time

O(n + m)

Converting each list to a set takes O(n) and O(m) respectively. Set difference operations also run in O(n) and O(m) time. Overall, the operations are linear in the total input size.

Space

O(n + m)

The sets store unique elements from each input array, requiring space proportional to the number of distinct elements in nums1 and nums2.

Pattern Spotlight

Hash Maps (Set Operations for Membership and Difference)

When asked to find distinct elements exclusive to one collection compared to another, convert inputs to sets and use set difference operations to achieve efficient membership checks and uniqueness guarantees.

Solution

Python
1class Solution:
2 def findDifference(self, nums1: list[int], nums2: list[int]) -> list[list[int]]:
3 set1 = set(nums1)
4 set2 = set(nums2)
5
6 return [
7 list(set1 - set2),
8 list(set2 - set1)
9 ]

Step-by-Step Solution

1

Convert Input Arrays to Sets to Extract Unique Elements

3set1 = set(nums1)
4set2 = set(nums2)

Objective

To transform the input lists into sets, removing duplicates and enabling efficient membership operations.

Key Insight

Sets automatically enforce uniqueness and provide O(1) average-time membership checks, which are essential for efficiently computing the difference between two collections. This transformation simplifies the problem from handling lists with potential duplicates to handling unique elements only.

Interview Quick-Check

Core Logic

Converting lists to sets removes duplicates and enables efficient difference operations.

Common Pitfalls & Bugs

Failing to convert to sets first can lead to incorrect results due to duplicates and inefficient nested membership checks.

2

Compute Set Differences and Return Result Lists

To calculate the elements unique to each input array by performing set difference operations and convert the results back to lists for the final output.

1 more step with full analysis available on Pro.

Line Analysis

This solution has 3 Critical lines interviewers watch for.

Line 6 Critical
return [

Return a list containing two lists: elements unique to nums1 and elements unique to nums2.

This line performs the core set difference operations and converts the results back to lists, producing the final output in the required format.

Line 7 Critical
list(set1 - set2),

Compute the list of elements in set1 but not in set2.

This set difference operation efficiently identifies all unique elements exclusive to nums1 without duplicates.

Line 8 Critical
list(set2 - set1)

Compute the list of elements in set2 but not in set1.

This set difference operation efficiently identifies all unique elements exclusive to nums2 without duplicates.

Full line-by-line criticality + rationale for all 5 lines available on Pro.

Test Your Understanding

Why is converting the input arrays to sets before computing differences critical for efficiency?

See the answer with Pro.

Related Problems

Hash Maps pattern

Don't just read it. Drill it.

Reconstruct Find the Difference of Two Arrays from memory until it sticks. AlgoDrill blanks out key lines and makes you fill them back in, step by step.

Unlock the Find the Difference of Two Arrays drill

or drill a free problem