Article start
DSA Course: Interview Patterns and Problem Solving
Module 9: Hashing & Prefix Sum

Find Duplicates: Frequency Map Pattern

Collect values that appear more than once exactly once.

May 29, 2026·25

Learning Outcome

After this lesson, you should be able to count values and add a duplicate to the answer only when its frequency reaches 2.

Problem Statement

Given an array, return all values that appear at least twice.

InputOutputWhy
nums = [4,3,2,7,8,2,3,1][2,3]The values 2 and 3 appear more than once.

Brute Force Approach

For each element, scan the rest of the array to check whether it appears again. This is quadratic.

Optimized Approach

Use a frequency map. Increment the count for each value and append the value exactly when its count becomes 2.

Exact Pseudocode

freq = empty map
answer = []
for x in nums:
  freq[x] += 1
  if freq[x] == 2:
    answer.add(x)
return answer

Reference Code

class Solution:
    def findDuplicates(self, nums):
        freq = {}
        answer = []

        for x in nums:
            freq[x] = freq.get(x, 0) + 1
            if freq[x] == 2:
                answer.append(x)

        return answer

Sample Dry Run

StepStateResult
4,3,2,7,8All counts become 1answer = []
Second 2count becomes 2answer = [2]
Second 3count becomes 2answer = [2,3]
Finish1 has count 1return [2,3]

Complexity

MeasureValueReason
TimeO(n)Each number updates one hashmap entry.
SpaceO(n)The map can store every distinct number.

Edge Cases

  • A value appearing three times should still be returned once.
  • An array with no duplicates returns an empty list.
  • Negative values work with a hashmap.

Interview Checklist

  • Append only when count becomes exactly 2.
  • Use a map if values are not limited to a small range.
  • Do not append again when count becomes 3 or more.

FAQs

Why append when count is 2?

That is the first moment we know the value is duplicated, and it prevents duplicate output entries.

Can this be done in-place?

Some constrained versions allow index marking, but the hashmap version is clearer and works for general values.

What is the core pattern?

Frequency counting.

Test your knowledge

Take a quick quiz based on this chapter.

Discussion

0 comments

Sign in to share a question or add to the discussion.
Start the discussion

Ask a question or share what stood out to you.