Article start
DSA Course: Interview Patterns and Problem Solving
Module 12: Heap & Priority Queue

Top K Frequent Elements: Frequency Heap Pattern

Find the k most frequent values using a frequency map and heap.

May 29, 2026·32

Learning Outcome

After this lesson, you should be able to combine a frequency map with a size-k heap to rank values.

Problem Statement

Given an integer array and k, return the k elements that appear most frequently.

InputOutputWhy
nums = [1,1,1,2,2,3], k = 2[1,2]1 appears three times and 2 appears twice.

Brute Force Approach

Count frequencies, then sort every unique value by frequency. This works but costs extra sorting time.

Optimized Approach

Count frequencies and maintain a min-heap of size k by frequency. The heap discards lower-frequency values.

Exact Pseudocode

freq = value counts
heap = empty min heap by frequency
for each value and count:
  push (count, value)
  if heap size is greater than k:
    pop smallest frequency
return values from heap

Reference Code

import heapq
from collections import Counter

class Solution:
    def topKFrequent(self, nums, k):
        heap = []
        for value, count in Counter(nums).items():
            heapq.heappush(heap, (count, value))
            if len(heap) > k:
                heapq.heappop(heap)
        return [value for count, value in heap]

Sample Dry Run

StepStateResult
Count1:3, 2:2, 3:1Frequency map ready
Push 1 and 2heap size is 2Both remain
Push 3frequency 1 is smallest3 is popped
Returnheap has 1 and 2top k frequent values

Complexity

MeasureValueReason
TimeO(n + m log k)n counts input values and m unique values are processed by the heap.
SpaceO(m)The frequency map stores m values and the heap stores k values.

Edge Cases

  • If k equals the number of unique values, return all unique values.
  • Output order is usually not important unless specified.
  • Values can be negative or repeated many times.

Interview Checklist

  • Heap must rank by frequency, not raw value.
  • Keep heap size at most k.
  • Build the frequency map before ranking.

FAQs

Why use a min-heap?

The smallest frequency among the current top k should be easiest to remove.

What does m mean?

m is the number of unique values in the input.

What is the core pattern?

Frequency map plus size-k heap.

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.