力扣综合题详细解析:前k个高频单词

151 篇文章 1 订阅
129 篇文章 1 订阅

1.692. 前K个高频单词 - 力扣(LeetCode)

2.整体思路:创建一个map对单词的出现次序进行排序,然后将map中的pair对象提取出来放到一个vector数组里,进行排序,其中sort的第三个元素为仿函数,也就是()的重载,类似于qsort中的比较函数,而比较首先要比较次数,如果次数相同比较字典序(asc码比较),最后尾插并返回字符串的排序

class Solution {
public:
struct newk{
bool operator()(const pair<string ,int>p1,const pair<string,int>p2)
{
    return p1.second>p2.second||(p1.second==p2.second&&p1.first<p2.first);
}
};
    vector<string> topKFrequent(vector<string>& words, int k) {
map<string,int>countmap;
for(auto &str:words)
{
    countmap[str]++;
}
vector<pair<string ,int>>VT(countmap.begin(),countmap.end());
sort(VT.begin(),VT.end(),newk());

vector<string>solution;
for(int x=0;x<k;x++)
{
    solution.push_back(VT[x].first);
}
return solution;
    }
};

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值