692. 前K个高频单词(map的练习)
目录
1、题目分析
2.解题思路
3.代码实现
4.总结
1、题目分析
2.解题思路
首先它给出我们一个string,让我们提取出它们中出现次数最多的。利用map将word一个一个存入其中,没有就插入,有了就+1,这样我们就得到了key_value,key为单词,value为单词出现次数,但是现在我们的排序不是按照value进行排序的,我们让再次利用multimap,让它进行的排序查找,并且降序插入,让它从大到小(方便我们直接插入k个值),之后建立一个vector<string>进行插入k次即可。
3.代码实现
class Solution {
public:vector<string> topKFrequent(vector<string>& words, int k) {map<string, int>mup;//将words存入mup中for (auto e : words){auto it = mup.find(e);if (it == mup.end()){mup.insert({e,1});}else{mup[e]++;}}multimap<int, string, greater<int>>mup1;for (auto e : mup){mup1.insert({ e.second, e.first });}int count = 0;vector<string>nums;auto it2 = mup1.begin();for (int i = 0; i <k ; i++){nums.push_back((*it2).second);it2++;}return nums;}
};
4.总结
这道题锻炼我们对于map的接口使用,熟练的使用map的接口使我们解题的关键。