leetcode每日一题
[1738] 找出第 K 大的异或坐标值
[1744] 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
[231] 2的幂
堆排复习
[461] 汉明距离
[1190] 反转每对括号间的子串
[1707] 与数组中元素的最大异或值
[810] 黑板异或游戏
[1035] 不相交的线
[692] 前K个高频单词
[872] 叶子相似的树
[1442] 形成两个异或相等数组的三元组数目
[993] 二叉树的堂兄弟节点
[421] 数组中两个数的最大异或值
[13] 罗马数字转整数
[12] 整数转罗马数字
[1269]. 停在原地的方案数
[1310] 子数组异或查询
[1734] 解码异或后的排列
本文档使用 MrDoc 发布
-
+
首页
[692] 前K个高频单词
## [692] 前 K 个高频单词 [力扣原题地址](https://leetcode-cn.com/problems/top-k-frequent-words/) 给一非空的单词列表,返回前 *k * 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 **示例 1:** <pre><strong> 输入:</strong> ["i", "love", "leetcode", "i", "love", "coding"], k = 2 <strong> 输出:</strong> ["i", "love"] <strong> 解析:</strong> "i" 和 "love" 为出现次数最多的两个单词,均为 2 次。 注意,按字母顺序 "i" 在 "love" 之前。 </pre> **示例 2:** <pre><strong> 输入:</strong> ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4 <strong> 输出:</strong> ["the", "is", "sunny", "day"] <strong> 解析:</strong> "the", "is", "sunny" 和 "day" 是出现次数最多的四个单词, 出现次数依次为 4, 3, 2 和 1 次。 </pre> **注意:** 1. 假定 *k* 总为有效值, 1 ≤ *k* ≤ 集合元素数。 2. 输入的单词均由小写字母组成。 **扩展练习:** 1. 尝试以 *O* (*n* log *k* ) 时间复杂度和 *O* (*n* ) 空间复杂度解决。 ### 题解 先遍历数组数据,用 map 表保存数据。映射关系为:字符串,出现的次数。再使用一个数据,依次遍历 map 数据,将数据按照出现次数有序插入数组。时间复杂度为 O(KN). ### 代码 ```cpp class Solution { public: vector<string> topKFrequent(vector<string>& words, int k) { std::map<string,int> tmp; //哈希表,保存字符串与出现次数的映射关系 for(int i = 0; i < (int)words.size(); ++i) { if(tmp.count(words[i]) <= 0) { tmp[words[i]] = 0; } tmp[words[i]] ++; } tmp[""] = INT_MIN; std::vector<string> top_list; top_list.resize(k,""); //构造一个 k 长度的数组 依次插入数据 for(auto it = tmp.begin();it != tmp.end(); ++it) { string tmp_str = it->first; bool is_first_change = true; //用于标识是插入数据还是因为插入数据导致的后续数据移位。 for(int i = 0; i < k; ++i) { if(tmp[tmp_str] > tmp[top_list[i]] || (tmp[tmp_str] == tmp[top_list[i]] && !is_first_change)) { string tmp_tmp = top_list[i]; top_list[i] = tmp_str; tmp_str = tmp_tmp; is_first_change = false; } } } return top_list; } }; ```
ty
2021年5月20日 16:31
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
阅读量
次
本站总访问量
次
本站访客数
人次
Markdown文件
分享
链接
类型
密码
更新密码