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个高频单词(哈希表+排序)相关推荐

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

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

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

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

  3. 692. 前K个高频单词

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

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

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

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

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

  6. 2022-1-29 Leetcode 692.前K个高频单词

    这道题中学到的几个知识点: 优先队列的排序规则是什么? The comparison function used to determine whether one element is smaller ...

  7. leetcode 前K个高频单词

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

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

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

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

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

最新文章

  1. 30、【华为HCIE-Storage】--Hyper Metro(双活【块业务】)
  2. 二、linux最小驱动
  3. 【Noip模拟By yxj】
  4. 使用 bash 脚本把 AWS EC2 数据备份到 S3
  5. TypeScript Non-null Assertion Operator 非空断言操作符 - 感叹号
  6. python tkinter教程 博客园_python tkinter教程-事件绑定
  7. 突然不能 ip访问服务器文件夹,用友U8 工作站连接不到服务器,ping IP及服务器名都正常,访问服务器共享文件夹也正常...
  8. redis -- 学习
  9. 天猫国际通过Hologres进行排行榜的实时交互式分析
  10. cloudstack+ceph中解决ceph单点问题
  11. 转移到ios下载安卓_安卓和IOS角色互转 和平精英跨系统角色转移服务将上线
  12. ZBrush中的Clip剪切笔刷怎么快速运用
  13. 2.2. MongoDB 管理
  14. 很累很失败,发奋学英语
  15. 存储过程和存储函数和触发器示例
  16. AngularJS支持的事件
  17. springmvc执行原理(基于组件)
  18. HTML5手机游戏将迎美好未来 .
  19. 我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)
  20. 基于Lumerical FDTD的等离子体光子晶体分析

热门文章

  1. 短信猫发送GSM 和 CDMA PDU长短信
  2. hough变换检测圆周_用点Hough变换实现圆检测的方法
  3. Windows/Linux/Mac上蜂鸣器报警
  4. 川农在线计算机统考资料,川农《计算机图像处理(本科)》18年12月在线作业资料...
  5. 算法--运筹规划--pulp(一)
  6. Pr导出视频如何设置为1080P
  7. 处理ceph osd incomplete
  8. Java期末作业——王者荣耀的洛克王国版游戏
  9. Ubuntu1804编译Tiny4412 Android源代码遇到的问题
  10. 电子计算机计算精度不高,(1)计算机的特点是处理速度快、计算精度高、存储容量大、可靠性高、工作全自动以及...