题意:给出出现频数前K个的数字。
思路:统计频数,并将数字按频数排序。
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
map<int, int> m;
for(int i = 0; i < nums.size(); ++ i){
m[nums[i]] ++;
}
vector<pair<int, int> > p;
pair<int, int> temp;
std::map<int, int>::iterator it;
for(it = m.begin(); it != m.end(); ++ it) {
temp.first = it->first;
temp.second = it->second;
p.push_back(temp);
}
std::sort(p.begin(), p.end(), [](const pair<int, int> a, const pair<int, int> b){return a.second > b.second;});
vector<int> re;
for(int i = 0; i < k; i ++) {
re.push_back(p[i].first);
}
return re;
}
};