1. 前K个高频单词
class Solution {
public:
vector<string> topKFrequent(vector<string>& words, int k)
{
map<string,int> m;
for(auto e: words)
{
m[e]++;
}
multimap<int,string,greater<int>> sort_map;
for(auto& kv : m)
{
sort_map.insert(make_pair(kv.second,kv.first));
}
vector<string> v;
for(auto e : sort_map)
{
v.push_back(e.second);
if(--k == 0)
break;
}
return v;
}
};
解题思路:
先将单词进行统计,然后使用mulinmap进行对字符排序,通过仿函数控制次数的从大到小,然后遍历即可
2.数组中超过一半的数字
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int n = numbers.size();
map<int, int> m;
int count;
for (auto e : numbers)
{
count = ++m[e];
if (count > n/2)
return e;
}
return 0;
}
};
解题思路:
利用map的operator[],实现计数功能;