Skip to content
ΣDSA Patterns
Menu
Language

Hashing

Guide 4 of 6 · Path 4 of 6

Interactive

Mental model

A worked animation for this problem. Scrub steps or press space to pause; re-tell the invariant out loud.

Step 1 of 8
2
7
11
15
map{ }

target = 9

Two Sum in one pass: ask for the complement before inserting.

Contains Duplicate

Problem (restated)

Return true if any value appears at least twice in the array.

Intuition

A set remembers seen values; a second sighting is a duplicate.

Approaches

Hash set

Verified
Time O(n)Space O(n)

Idea. Insert each number into a set; if already present, return true.

Walkthrough. [1,2,3,1] → see 1 again → true.

Trade-offs. Sorting is O(n log n) with O(1) extra space if allowed to mutate.

Solution
export function containsDuplicate(nums: number[]): boolean {
  const seen = new Set<number>();
  for (const x of nums) {
    if (seen.has(x)) return true;
    seen.add(x);
  }
  return false;
}
export function containsDuplicate(nums: number[]): boolean {
  const seen = new Set<number>();
  for (const x of nums) {
    if (seen.has(x)) return true;
    seen.add(x);
  }
  return false;
}

Reflection