Top 'K' Frequent Numbers (medium)

Problem Statement #

Given an unsorted array of numbers, find the top ‘K’ frequently occurring numbers in it.

Example 1:

Input: [1, 3, 5, 12, 11, 12, 11], K = 2
Output: [12, 11]
Explanation: Both '11' and '12' apeared twice.

Example 2:

Input: [5, 12, 11, 3, 11], K = 2
Output: [11, 5] or [11, 12] or [11, 3]
Explanation: Only '11' appeared twice, all other numbers appeared once.

Try it yourself #

Try solving this question here:

Output

0.464s

Here are the K frequent numbers: [] Here are the K frequent numbers: []

Solution #

This problem follows Top ‘K’ Numbers. The only difference is that in this problem, we need to find the most frequently occurring number compared to finding the largest numbers.

We can follow the same approach as discussed in the Top K Elements problem. However, in this problem, we first need to know the frequency of each number, for which we can use a HashMap. Once we have the frequency map, we can use a Min Heap to find the ‘K’ most frequently occurring number. In the Min Heap, instead of comparing numbers we will compare their frequencies in order to get frequently occurring numbers

Code #

Here is what our algorithm will look like:

Output

0.551s

Here are the K frequent numbers: [11, 12] Here are the K frequent numbers: [12, 11]

Time complexity #

The time complexity of the above algorithm is O(N+NlogK)O(N+N*logK).

Space complexity #

The space complexity will be O(N)O(N). Even though we are storing only ‘K’ numbers in the heap. For the frequency map, however, we need to store all the ‘N’ numbers.

Mark as Completed
←    Back
Connect Ropes (easy)
Next    →
Frequency Sort (medium)