Top K Frequent Elements
Given a non-empty array of integers, return the k most frequent elements.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Note:
You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
It's guaranteed that the answer is unique, in other words the set of the top k frequent elements is unique.
You can return the answer in any order.
Solutions
🧠 Cpp
#include <map>
class Solution
{
public:
vector<int> topKFrequent(vector<int>& nums, int k)
{
std::map<int, int> input_map;
for(int i : nums)
input_map[i]++;
//sort by values(freqency)
std::multimap<int, int> sorted_input_map;
for(auto p : input_map)
sorted_input_map.insert({p.second, p.first});
vector<int> res;
for(auto iter = --sorted_input_map.end(); k--; --iter)
res.push_back(iter->second);
return res;
}
};
Last updated
Was this helpful?