Last updated on October 5th, 2024 at 06:03 pm
Here, We see Top K Frequent Words 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
Topics
Hash Table, Heap, Trie
Companies
Amazon, Bloomberg, Uber, Yelp
Level of Question
Medium
Top K Frequent Words LeetCode Solution
Table of Contents
Problem Statement
Given an array of strings words
and an integer k
, return the k
most frequent strings.
Return the answer sorted by the frequency from highest to lowest. Sort the words with the same frequency by their lexicographical order.
Example 1:
Input: words = [“i”,”love”,”leetcode”,”i”,”love”,”coding”], k = 2
Output: [“i”,”love”]
Explanation: “i” and “love” are the two most frequent words. Note that “i” comes before “love” due to a lower alphabetical order.
Example 2:
Input: words = [“the”,”day”,”is”,”sunny”,”the”,”the”,”the”,”sunny”,”is”,”is”], k = 4
Output: [“the”,”is”,”sunny”,”day”]
Explanation: “the”, “is”, “sunny” and “day” are the four most frequent words, with the number of occurrence being 4, 3, 2 and 1 respectively.
1. Top K Frequent Words LeetCode Solution C++
class Solution { public: static bool comparator(pair<string,int> p1, pair<string,int> p2) { if(p1.second>p2.second || (p1.second==p2.second && p1.first<p2.first)) return true; return false; } vector<string> topKFrequent(vector<string>& words, int k) { unordered_map<string,int> m1; for(int i=0; i<words.size(); i++) m1[words[i]]++; vector<pair<string,int>> v1; for(auto it=m1.begin(); it!=m1.end(); it++) v1.push_back({it->first,it->second}); sort(v1.begin(),v1.end(),comparator); vector<string> ans; for(int i=0; i<k; i++) { ans.push_back(v1[i].first); } return ans; } };
2. Top K Frequent Words LeetCode Solution Java
class Solution { public List<String> topKFrequent(String[] words, int k) { HashMap<String,Integer> freq=new HashMap<>(); for(int i=0;i<words.length;i++) { freq.put(words[i],freq.getOrDefault(words[i],0)+1); } List<String> res = new ArrayList(freq.keySet()); Collections.sort(res, (w1, w2) -> freq.get(w1).equals(freq.get(w2)) ? w1.compareTo(w2) : freq.get(w2) - freq.get(w1)); return res.subList(0, k); } }
3. Top K Frequent Words Solution JavaScript
var topKFrequent = function(words, k) { let hash = {}; for (let word of words) { hash[word] = hash[word]+1||1; } let result = Object.keys(hash).sort((a,b)=>{ let countCompare = hash[b] - hash[a]; if (countCompare == 0) return a.localeCompare(b); else return countCompare; } ); return result.slice(0, k); };
4. Top K Frequent Words Solution Python
class Solution(object): def topKFrequent(self, words, k): dict = {} for x in words: if x in dict: dict[x] += 1 else: dict[x] = 1 res = sorted(dict, key=lambda x: (-dict[x], x)) return res[:k]