目录
一、题目
二、代码
一、题目
692. 前K个高频单词 - 力扣(LeetCode)
二、代码
class Solution {
class KV_sort
{
public:
bool operator()(const pair<string,int> kv1, const pair<string,int> kv2)
{
if(kv1.first == kv2.first )//两个对象的单词相同,就比较次数
{
return kv2.second > kv1.second;// 返回 true 表示 kv2 在 kv1 之前
}
else
{
//根据 pair 中的第二个元素进行比较
return kv1.second>kv2.second;// 返回 true 表示 kv1 在 kv2 之前
}
}
};
public:
vector<string> topKFrequent(vector<string>& words, int k) {
map<string,int> m;
//先统计每个单词出现的次数+自动排序
for(auto& str:words)
{
m[str]++;
}
//sort 无法直接对 map进行排序
vector<pair<string,int>> KV(m.begin(),m.end());
stable_sort(KV.begin(),KV.end(),KV_sort());//进行稳定性排序
vector<string>ret;//结果存放
for(int i=0;i<k;i++)
{
ret.push_back(KV[i].first);
}
return ret;
}
};