Java前K个高频单词
给定一个单词列表 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个高频单词相关推荐
- 前k个高频单词【Java】
前k个高频单词 问题描述 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...
- 用Java输出高频词_Java实现 LeetCode 692 前K个高频单词(map的应用)
692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...
- 算法题——前K个高频单词
每日刷题LeetCode--692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. ...
- 692. 前K个高频单词
前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i& ...
- leetcode 前K个高频单词
692. 前K个高频单词 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例1 输入: [&q ...
- 力扣692.前K个高频单词
692.前K个高频单词 思路1: 创建HashMap,并把单词以及其频率存进HashMap中 将keySet()存进List链表中,并用Collections的sort进行逻辑的排序 再创建满足题意的 ...
- leetcode 692. 前K个高频单词
题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i" ...
- LeetCode 692. 前K个高频单词(优先队列)
1. 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序. 如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i&q ...
- leetcode692:前K个高频单词
题目: 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率, 按字典顺序 排序. 示例 1: 输 ...
最新文章
- Excel导出多sheet单sheet通用型(poi)
- textview 滚动显示.txt
- 【年度技术观点合集】计算机视觉,自然语言,机器学习…看看顶级科学家们怎么说
- 最短公共子序列_最短公共超序列
- 从创业失败中学到的七条教训
- 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
- linux重新安装xrog文件,Linux下重新生成xorg.conf
- ZZULIOJ 1098: 复合函数求值(函数专题)
- python移植到arm_python移植到arm平台
- mt4软件较稳定的交易商服务器地址,外汇MetaTrader 4 常见交易商服务器ip地址汇总...
- webpack笔记_(1)_webpack 安装
- 微软数据视界:图解数据分析价值
- Spring boot 之搭建
- 在线 LaTeX 公式编辑器
- vue将图片链接、本地图片转为二进制文件流
- c语言编码任务描述,C语言委派任务问题代码及解析
- 近期做笔试题总结和思考(百度,滴滴,360)
- R语言epiDisplay包的kap函数计算配对列联表的计算一致性的比例以及Kappa统计量的值(总一致性、期望一致性)、使用xtabs函数生成二维列联表、使用wttable参数设置权重表参数为w2
- java基础小记_[Java教程]Java基础学习小记
- 教你用C计算2的n次方
热门文章
- “交通·未来”第10期:基于深度学习的动态系统复杂数据建模方法:以铁路列车晚点预测为例...
- Unity序列帧动画——Sprite图片集制作UI动画
- PlantSimulation学习笔记:3种故障模式(Failure relates to)详解
- C# MQTTnet使用心得和C# MQTT库M2Mqtt的使用方法
- 如何在Excel/WPS表格中批量查询顺丰快递信息?
- 脑电采集理论基础:脑电信号采集方式、分类及特点、伪迹、导联
- Matlab:实现带传感器融合的自适应巡航控制(附完整源码)
- 最简单的阿拉伯数字转大写(财务专用)存储过程实现
- 中小中介公司,如何应对链家推出的贝壳找房那种VR看房模式
- 【杰理ac63系列】串口使用