给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。

返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。

示例 1:

输入: words = [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2
输出: [“i”, “love”]
解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。
注意,按字母顺序 “i” 在 “love” 之前。
示例 2:

输入: [“the”, “day”, “is”, “sunny”, “the”, “the”, “the”, “sunny”, “is”, “is”], k = 4
输出: [“the”, “is”, “sunny”, “day”]
解析: “the”, “is”, “sunny” 和 “day” 是出现次数最多的四个单词,
出现次数依次为 4, 3, 2 和 1 次。

注意:

1 <= words.length <= 500
1 <= words[i] <= 10
words[i] 由小写英文字母组成。
k 的取值范围是 [1, 不同 words[i] 的数量]

进阶:尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/top-k-frequent-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

public List<String> topKFrequent(String[] words, int k) {//1.统计每个单词出现的次数mapMap<String,Integer> map = new HashMap<>();for(String word: words){map.put(word,map.getOrDefault(word, 0)+1);}//2.建立一个大小为k的小根堆PriorityQueue<Map.Entry<String, Integer>> minHeap = new PriorityQueue<>(k, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {if(o1.getValue()-o2.getValue() == 0){return o2.getKey().compareTo(o1.getKey());}return o1.getValue()-o2.getValue();}});//3.遍历mapfor (Map.Entry<String, Integer> entry:map.entrySet()) {//队列未满的情况if(minHeap.size() < k){minHeap.offer(entry);}else{//走到这里队列满了//频率相同 比较key key小的入Map.Entry<String, Integer> top = minHeap.peek();if(top.getValue().compareTo(entry.getValue()) == 0){if(top.getKey().compareTo(entry.getKey()) > 0){minHeap.poll();minHeap.offer(entry);}}else{//频率大的入if(top.getValue().compareTo(entry.getValue()) < 0){minHeap.poll();minHeap.offer(entry);}}}}//4.放入List中List<String> list = new LinkedList<>();for (int i = 0; i < k; i++) {list.add(minHeap.poll().getKey());}//5.list翻转Collections.reverse(list);return list;}

Java前K个高频单词相关推荐

  1. 前k个高频单词【Java】

    前k个高频单词 问题描述 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...

  2. 用Java输出高频词_Java实现 LeetCode 692 前K个高频单词(map的应用)

    692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...

  3. 算法题——前K个高频单词

    每日刷题LeetCode--692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. ...

  4. 692. 前K个高频单词

    前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i& ...

  5. leetcode 前K个高频单词

    692. 前K个高频单词 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例1 输入: [&q ...

  6. 力扣692.前K个高频单词

    692.前K个高频单词 思路1: 创建HashMap,并把单词以及其频率存进HashMap中 将keySet()存进List链表中,并用Collections的sort进行逻辑的排序 再创建满足题意的 ...

  7. leetcode 692. 前K个高频单词

    题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i" ...

  8. LeetCode 692. 前K个高频单词(优先队列)

    1. 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序. 如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i&q ...

  9. leetcode692:前K个高频单词

    题目: 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率, 按字典顺序 排序. 示例 1: 输 ...

最新文章

  1. Excel导出多sheet单sheet通用型(poi)
  2. textview 滚动显示.txt
  3. 【年度技术观点合集】计算机视觉,自然语言,机器学习…看看顶级科学家们怎么说
  4. 最短公共子序列_最短公共超序列
  5. 从创业失败中学到的七条教训
  6. 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
  7. linux重新安装xrog文件,Linux下重新生成xorg.conf
  8. ZZULIOJ 1098: 复合函数求值(函数专题)
  9. python移植到arm_python移植到arm平台
  10. mt4软件较稳定的交易商服务器地址,外汇MetaTrader 4 常见交易商服务器ip地址汇总...
  11. webpack笔记_(1)_webpack 安装
  12. 微软数据视界:图解数据分析价值
  13. Spring boot 之搭建
  14. 在线 LaTeX 公式编辑器
  15. vue将图片链接、本地图片转为二进制文件流
  16. c语言编码任务描述,C语言委派任务问题代码及解析
  17. 近期做笔试题总结和思考(百度,滴滴,360)
  18. R语言epiDisplay包的kap函数计算配对列联表的计算一致性的比例以及Kappa统计量的值(总一致性、期望一致性)、使用xtabs函数生成二维列联表、使用wttable参数设置权重表参数为w2
  19. java基础小记_[Java教程]Java基础学习小记
  20. 教你用C计算2的n次方

热门文章

  1. “交通·未来”第10期:基于深度学习的动态系统复杂数据建模方法:以铁路列车晚点预测为例...
  2. Unity序列帧动画——Sprite图片集制作UI动画
  3. PlantSimulation学习笔记:3种故障模式(Failure relates to)详解
  4. C# MQTTnet使用心得和C# MQTT库M2Mqtt的使用方法
  5. 如何在Excel/WPS表格中批量查询顺丰快递信息?
  6. 脑电采集理论基础:脑电信号采集方式、分类及特点、伪迹、导联
  7. Matlab:实现带传感器融合的自适应巡航控制(附完整源码)
  8. 最简单的阿拉伯数字转大写(财务专用)存储过程实现
  9. 中小中介公司,如何应对链家推出的贝壳找房那种VR看房模式
  10. 【杰理ac63系列】串口使用