Here, We see Top K Frequent Elements LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Top K Frequent Elements LeetCode Solution
Table of Contents
Problem Statement
Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Top K Frequent Elements Leetcode Solution C++
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int,int> map;
for(int num : nums){
map[num]++;
}
vector<int> res;
priority_queue<pair<int,int>> pq;
for(auto it = map.begin(); it != map.end(); it++){
pq.push(make_pair(it->second, it->first));
if(pq.size() > (int)map.size() - k){
res.push_back(pq.top().second);
pq.pop();
}
}
return res;
}
};
Code language: C++ (cpp)
Top K Frequent Elements Leetcode Solution Java
class Solution {
public int[] topKFrequent(int[] nums, int k) {
List<Integer>[] freqSorted = new List[nums.length +1];
Map<Integer, Integer> frequencyMap = new HashMap();
List<Integer> res = new ArrayList();
for(int n: nums)
frequencyMap.put(n, frequencyMap.getOrDefault(n, 0) + 1);
for(int key: frequencyMap.keySet()){
if(freqSorted[frequencyMap.get(key)] == null)
freqSorted[frequencyMap.get(key)] = new ArrayList();
freqSorted[frequencyMap.get(key)].add(key);
}
for(int i = freqSorted.length - 1; i >= 0 && res.size() < k; i--)
if(freqSorted[i] != null){
res.addAll(freqSorted[i]);
}
return res.stream().mapToInt(i->i).toArray();
}
}
Code language: Java (java)
Top K Frequent Elements Solution JavaScript
var topKFrequent = function(nums, k) {
const freqMap = new Map();
const bucket = [];
const result = [];
for(let num of nums) {
freqMap.set(num, (freqMap.get(num) || 0) + 1);
}
for(let [num, freq] of freqMap) {
bucket[freq] = (bucket[freq] || new Set()).add(num);
}
for(let i = bucket.length-1; i >= 0; i--) {
if(bucket[i]) result.push(...bucket[i]);
if(result.length === k) break;
}
return result;
};
Code language: JavaScript (javascript)
Top K Frequent Elements Solution Python
class Solution(object):
def topKFrequent(self, nums, k):
map=Counter(nums)
result=[]
for key,value in map.items():
result.append([key,value])
result.sort(key=lambda x:x[1],reverse=True)
return [x[0] for x in result[:k]]
Code language: Python (python)