Coders Crushby Napplied AI
Back to DSA Problems
MediumLeetCode #347Arrays & Hashing

Top K Frequent Elements

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^5, -10^4 <= nums[i] <= 10^4, k is in the range [1, the number of unique elements]
Examples
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Solution

Approach

Count frequencies with hash map, then use bucket sort (index = frequency) or heap to find top k elements in O(n) time.

def topKFrequent(nums, k):
    count = Counter(nums)
    bucket = [[] for _ in range(len(nums) + 1)]
    for num, freq in count.items():
        bucket[freq].append(num)
    result = []
    for i in range(len(bucket) - 1, 0, -1):
        for num in bucket[i]:
            result.append(num)
            if len(result) == k:
                return result
    return result
Complexity
Time:O(n)
Space:O(n)
Hints
  • 1.First count frequencies
  • 2.Think about bucket sort where index is frequency
  • 3.Alternatively use a min-heap of size k
Asked at
Google
Coders Crushby Napplied AI

The ultimate interview preparation platform. Master System Design, DSA, and tackle community challenges to crush your FAANG interviews.

Looking for jobs? Visit Napplied AI Jobs Search Agent

System Design

  • All Problems
  • Easy
  • Hard

DSA

  • All Problems
  • Dynamic Programming
  • Graphs

More

  • Problems Arena
  • Growth Paths
  • My Crush

Coders Crush by Napplied AI - Tech Interview & Coding Should Be Effortless

Amazon
Meta
Apple
Microsoft