原题
https://leetcode-cn.com/problems/top-k-frequent-words/

思路
先哈希
再排序,排序代码是经典(值得一看)
题解
class Solution {
public List<String> topKFrequent(String[] words, int k) {
Map<String, Integer> map = new HashMap<>();
for (String word : words) {
map.put(word, map.getOrDefault(word, 0)+1);
}
List<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> entry : map.entrySet()) {
list.add(entry.getKey());
}
// 排序的代码是经典(值得一看)
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return map.get(o1)==map.get(o2) ? o1.compareTo(o2) : map.get(o2)-map.get(o1);
}
});
return list.subList(0, k);
}
}

本文介绍了一种解决LeetCode上Top K高频词汇问题的方法。通过使用哈希表统计单词频率,然后采用自定义排序策略对单词进行排序,最终返回出现频率最高的前K个单词。文章提供了一个简洁高效的解决方案。
1337





