博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Top K Frequent Words
阅读量:5267 次
发布时间:2019-06-14

本文共 1839 字,大约阅读时间需要 6 分钟。

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:

  1. You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
  2. Input words contain only lowercase letters.

Follow up:

  1. Try to solve it in O(n log k) time and O(n) extra space.

解法:hashmap + priority queue

1 class Solution { 2     public List
topKFrequent(String[] words, int k) { 3 4 List
result = new LinkedList<>(); 5 Map
map = new HashMap<>(); 6 for (int i = 0; i < words.length; i++) { 7 map.put(words[i], map.getOrDefault(words[i], 0) + 1); 8 } 9 10 PriorityQueue
> pq = new PriorityQueue<>(11 (a, b) -> a.getValue() == b.getValue() ? b.getKey().compareTo(a.getKey()) : a.getValue() - b.getValue());12 13 for (Map.Entry
entry : map.entrySet()) {14 pq.offer(entry);15 if (pq.size() > k) {16 pq.poll();17 }18 }19 20 while (!pq.isEmpty()) {21 result.add(0, pq.poll().getKey());22 }23 24 return result;25 }26 }

 其实这题还可以用quick sort 来解,复杂度更低。

转载于:https://www.cnblogs.com/beiyeqingteng/p/10743742.html

你可能感兴趣的文章
分布式计算开源框架Hadoop介绍
查看>>
安卓平台接口剖析
查看>>
linux文件编码查看与修改
查看>>
[Java] 系统环境变量配置
查看>>
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
HIT1946 希尔伯特分形曲线(dfs)
查看>>
第二次团队冲刺第二天
查看>>
青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 2
查看>>
bzoj 2257 (JSOI 2009) 瓶子与燃料
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
SEH简单研究
查看>>
Linux误删恢复
查看>>
Unity调用Windows窗口句柄,选择文件和目录
查看>>
HashMap循环遍历方式
查看>>
React Native 入门 调试项目
查看>>
MySQL数据库 基本操作
查看>>
请大家规范电子邮件用法养成好的邮件习惯
查看>>
微信游戏和微信公众号小说如何有效做好域名防封,给大家分享我的有效经验...
查看>>