692. Top K Frequent Words
来源:互联网 发布:linux sftp 端口 编辑:程序博客网 时间:2024/06/06 04:09
Given a non-empty list of words, return the k most frequent elements.
Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, then the word with the lower alphabetical order comes first.
Example 1:
Input: ["i", "love", "leetcode", "i", "love", "coding"], k = 2Output: ["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: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4Output: ["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.
Note:
- You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
- Input words contain only lowercase letters.
Follow up:
- Try to solve it in O(n log k) time and O(n) extra space.
java
class Word { int val; String word; public Word(String word, int val) { this.word = word; this.val = val; } }public class Solution { public List<String> topKFrequent(String[] words, int k) { if (words == null || words.length == 0) { return null; } Map<String, Integer> map = new HashMap<>(); for (String str : words) { if (map.containsKey(str)) { map.put(str, map.get(str) + 1); } else { map.put(str, 1); } } Comparator<Word> cmp = new Comparator<Word>() { public int compare(Word a, Word b) { int diff = a.val - b.val; if (diff == 0) { return b.word.compareTo(a.word); } else { return diff; } } }; Queue<Word> queue = new PriorityQueue<Word>(k + 1, cmp); for (String str : map.keySet()) { queue.offer(new Word(str, map.get(str))); if (queue.size() > k) { queue.poll(); } } List<String> list = new ArrayList<>(); while (!queue.isEmpty()) { list.add(queue.poll().word); } Collections.reverse(list); return list; }}
阅读全文
0 0
- 692. Top K Frequent Words
- 692. Top K Frequent Words
- Top K Frequent Words
- leetcode 692. Top K Frequent Words
- LeetCode 692. Top K Frequent Words
- LeetCode 692. Top K Frequent Words
- [刷题]Top K Frequent Words
- Top K Frequent Words问题及解法
- LeetCode.347(692) Top K Frequent Elements && Top K Frequent Words
- LeetCode算法题——Top K Frequent Words
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- 10.28机房小测T2-tarjan判断必经点
- 阅文集团重现盛大往事,多家子公司CEO离职!
- 滴滴又获73亿美元融资 成为全球第三大独角兽
- 比特币开挂疯涨 炮灰明显不够用了
- IEEE院士Ming C. Lin:VR中音频渲染模拟为何这么难?
- 692. Top K Frequent Words
- Unity 2D角色控制脚本C#直接上代码
- 正则表达式【语法、说明、表达式实例】
- 【OpenGL】窗口,视口,裁剪区
- 网站使用地图接口(以百度为例)和转换GPS的使用方法。
- 2017-10-28
- 思维模拟
- Java输出一个数的所有因子并但返回个数的算法
- 对于模板的小总结