leetcode 692. 前K个高频单词
Posted Lsummer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 692. 前K个高频单词相关的知识,希望对你有一定的参考价值。
692. 前K个高频单词
给一非空的单词列表,返回前 k 个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。
主要使用 [ 优先队列 ]+ [ 哈希表 ]
哈希表保存单词出现的频率 , 优先队列保存他的优先级顺序。
class Solution {
public List<String> topKFrequent(String[] words, int k) {
// key: String
// value: int
Map<String, Integer> map = new HashMap();
Queue<Map.Entry<String, Integer>> queue = new PriorityQueue<>((e, v) -> {
if (e.getValue() - v.getValue() == 0) {
return e.getKey().compareTo(v.getKey()); //
} else {
return v.getValue() - e.getValue(); // 小根堆 ,频率大的在前面
}
});
for (String word : words) {
map.put(word, map.getOrDefault(word, 0) + 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
queue.offer(entry);
}
List<String> res = new ArrayList<>();
while (!queue.isEmpty() && k!=0) {
res.add(queue.poll().getKey());
k--;
}
return res;
// ["i","love","coding","leetcode"]
}
}
以上是关于leetcode 692. 前K个高频单词的主要内容,如果未能解决你的问题,请参考以下文章