力扣练习——前K个高频单词(AC)

哈希表排序解决前k个高频单词
摘要由CSDN通过智能技术生成

69 前K个高频单词

1.问题描述
给一非空的单词列表,返回前 k 个出现次数最多的单词。

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

示例 1:

输入: [“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 次。

2.输入说明 :

首先输入单词列表的单词数目n,

然后输入n个单词,以空格分隔

最后输入整数k。

假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。

输入的单词均由小写字母组成。

3.输出说明:
按题目要求输出,单词之间以一个空格分隔,行首和行尾无多余空格。
4.范例
输入
6
i love leetcode i love coding
2

输出
i love
5.代码

#include<iostream>
#include<map>
#include<string>
#include<unordered_map>
#include<algorithm>
#include<string.h>
#include<sstream>
#include <vector>

using namespace std;

/*法一:使用pair进行排序*/
bool cmp(pair<string, int>a,  pair<string, int>b)
{
   
	return b.second == a.second ? a.first <b.first : a.second >b.second;
}
 void OrderByFreq(vector<string>words, int k ) {
   

	int n = words.size();//总单词个数
	if (n 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值