class Solution {
public:
vector<string> topKFrequent(vector<string>& words, int k) {
map<string, int> mp;
for(int i =0; i < words.size(); i++)
{
mp[words[i]]++;
}
priority_queue<pair<int,string>,
vector<pair<int,string>>,intComp>pq;
for(auto i = mp.begin(); i!= mp.end(); i++)
{
if(pq.size() ==k)
{
if((*i).second > pq.top().first)
{
pq.pop();
pq.push(make_pair(i->second, i->first));
}
}
else
{
pq.push(make_pair(i->second, i->first));
}
}
stack<pair<string, int>> s1;
while(!pq.empty())
{
s1.push(make_pair(pq.top().second, pq.top().first));
pq.pop();
}
vector<string> v1;
while(!s1.empty())
{
v1.push_back(s1.top().first);
s1.pop();
}
return v1;
}
struct intComp {
bool operator() (const pair<int, string>& lhs, const pair<int, string>& rhs) const{
if(lhs.first > rhs.first)
return true;
if(lhs.first == rhs.first && lhs.second < rhs.second)
return true;
return true;
}
};
};
前k个高频单词
最新推荐文章于 2021-05-21 21:50:30 发布