692前K个高频单词(哈希表+排序)
1、题目描述
给一非空的单词列表,返回前 k 个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。
注意:
假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。
输入的单词均由小写字母组成。
扩展练习:尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决。
2、示例
输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。
注意,按字母顺序 "i" 在 "love" 之前。
3、题解
基本思想:哈希表+排序,利用哈希表记录每一个字符串出现的频率,然后将哈希表中所有字符串进行排序,排序时,如果两个字符串出现频率相同,那么我们让两字符串中字典序较小的排在前面,否则我们让出现频率较高的排在前面。最后我们只需要保留序列中的前 kk 个字符串即可。
class Solution {
public:vector<string> topKFrequent(vector<string>& words, int k) {map<string,int> Map;vector<pair<int,string>> w;vector<string> res;for(int i=0;i<words.size();i++)Map[words[i]]++;for(auto iter=Map.begin();iter!=Map.end();iter++)w.push_back({iter->second,iter->first});sort(w.begin(),w.end(),[](pair<int,string> &a,pair<int,string> &b){return a.first==b.first?a.second<b.second:a.first>b.first;});for(int i=0;i<k;i++)res.push_back(w[i].second);return res;}
};
692前K个高频单词(哈希表+排序)相关推荐
- 用Java输出高频词_Java实现 LeetCode 692 前K个高频单词(map的应用)
692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...
- 力扣692.前K个高频单词
692.前K个高频单词 思路1: 创建HashMap,并把单词以及其频率存进HashMap中 将keySet()存进List链表中,并用Collections的sort进行逻辑的排序 再创建满足题意的 ...
- 692. 前K个高频单词
前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i& ...
- leetcode 692. 前K个高频单词
题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i" ...
- LeetCode 692. 前K个高频单词(优先队列)
1. 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序. 如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i&q ...
- 2022-1-29 Leetcode 692.前K个高频单词
这道题中学到的几个知识点: 优先队列的排序规则是什么? The comparison function used to determine whether one element is smaller ...
- leetcode 前K个高频单词
692. 前K个高频单词 题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例1 输入: [&q ...
- 算法题——前K个高频单词
每日刷题LeetCode--692. 前K个高频单词 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. ...
- 前k个高频单词【Java】
前k个高频单词 问题描述 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: [&qu ...
最新文章
- 30、【华为HCIE-Storage】--Hyper Metro(双活【块业务】)
- 二、linux最小驱动
- 【Noip模拟By yxj】
- 使用 bash 脚本把 AWS EC2 数据备份到 S3
- TypeScript Non-null Assertion Operator 非空断言操作符 - 感叹号
- python tkinter教程 博客园_python tkinter教程-事件绑定
- 突然不能 ip访问服务器文件夹,用友U8 工作站连接不到服务器,ping IP及服务器名都正常,访问服务器共享文件夹也正常...
- redis -- 学习
- 天猫国际通过Hologres进行排行榜的实时交互式分析
- cloudstack+ceph中解决ceph单点问题
- 转移到ios下载安卓_安卓和IOS角色互转 和平精英跨系统角色转移服务将上线
- ZBrush中的Clip剪切笔刷怎么快速运用
- 2.2. MongoDB 管理
- 很累很失败,发奋学英语
- 存储过程和存储函数和触发器示例
- AngularJS支持的事件
- springmvc执行原理(基于组件)
- HTML5手机游戏将迎美好未来 .
- 我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)
- 基于Lumerical FDTD的等离子体光子晶体分析
热门文章
- 短信猫发送GSM 和 CDMA PDU长短信
- hough变换检测圆周_用点Hough变换实现圆检测的方法
- Windows/Linux/Mac上蜂鸣器报警
- 川农在线计算机统考资料,川农《计算机图像处理(本科)》18年12月在线作业资料...
- 算法--运筹规划--pulp(一)
- Pr导出视频如何设置为1080P
- 处理ceph osd incomplete
- Java期末作业——王者荣耀的洛克王国版游戏
- Ubuntu1804编译Tiny4412 Android源代码遇到的问题
- 电子计算机计算精度不高,(1)计算机的特点是处理速度快、计算精度高、存储容量大、可靠性高、工作全自动以及...