19. Top K Frequent Elements
easyAsked at SpotifyGiven an integer array, return the k most frequent elements — a canonical heap pattern that maps directly to how Spotify surfaces the top-K tracks on a Weekly Charts leaderboard.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Problem
Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
Constraints
1 <= nums.length <= 10^5k is in the range [1, number of unique elements]The answer is guaranteed to be unique
Examples
Example 1
nums = [1,1,1,2,2,3], k = 2[1,2]Example 2
nums = [1], k = 1[1]Approaches
1. Sort by frequency
Count frequencies with a hash map, sort entries descending by count, return the first k keys.
- Time
- O(n log n)
- Space
- O(n)
function topKFrequent(nums, k) {
const freq = new Map();
for (const n of nums) freq.set(n, (freq.get(n) || 0) + 1);
return [...freq.entries()]
.sort((a, b) => b[1] - a[1])
.slice(0, k)
.map(([num]) => num);
}Tradeoff:
2. Bucket sort (optimal)
Build frequency buckets indexed by count; scan from highest bucket down to collect k elements in O(n) without sorting.
- Time
- O(n)
- Space
- O(n)
function topKFrequent(nums, k) {
const freq = new Map();
for (const n of nums) freq.set(n, (freq.get(n) || 0) + 1);
const buckets = Array.from({ length: nums.length + 1 }, () => []);
for (const [num, cnt] of freq) buckets[cnt].push(num);
const result = [];
for (let i = buckets.length - 1; i >= 0 && result.length < k; i--) {
result.push(...buckets[i]);
}
return result.slice(0, k);
}Tradeoff:
Spotify-specific tips
Spotify engineers ask this to probe whether you know when sorting is unnecessary. The bucket-sort insight — that count can't exceed array length, so you can index directly — earns the most credit. Tie your explanation to chart ranking: 'every stream event increments a counter; we want the top-K at query time without a full re-sort.'
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
Practice these live with InterviewChamp.AI
Drill Top K Frequent Elements and other Spotify interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →