Easyhashing
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
UnverifiedTime 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;
}
Template connection
Hash-set “seen before?” from the Hashing template.
Reflection
- “At least twice” is a set. Sorting and comparing neighbors is O(n log n).
- Are the empty array and a single element both false?
- What happens if you insert first and only then ask whether the value was already present?