题目描述[原题链接][https://leetcode-cn.com/problems/top-k-frequent-words/]
给一非空的单词列表,返回前 k 个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。
示例 1:
1 | 输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2 |
示例 2:
1 | 输入: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4 |
注意:
- 假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。
- 输入的单词均由小写字母组成。
扩展练习:
- 尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决。
算法描述
使用哈希表将字符串数组遍历一遍,对每个单词进行计数,完成后,使用优先队列,将哈希表中的结果添加至优先队列,在此之前需要重载一个小于号,这样就会按照从大到小的顺序在优先队列中,然后遍历前k个字符串,返回结果即可;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |