347. Top K Frequent Elements

来源:互联网 发布:itools.cn是什么软件 编辑:程序博客网 时间:2024/06/07 18:06

Given a non-empty array of integers, return the k most frequent elements.

For example,
Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note:
You may assume k is always valid, 1 ? k ? number of unique elements.
Your algorithm’s time complexity must be better than O(n log n), where n is the array’s size.

class Solution {public:    vector<int> topKFrequent(vector<int>& nums, int k) {        map<int,int> maps;        for(int num:nums){            maps[num]++;        }        vector<pair<int,int>> v;        for(auto it=maps.begin();it!=maps.end();it++)   v.push_back(make_pair(it->first,it->second));        sort(v.begin(),v.end(),comp);        vector<int> res;        for(int i=0;i<k;i++){            res.push_back(v[i].first);        }                return res;    }    static bool comp(pair<int,int> a,pair<int,int> b){        return a.second > b.second;          }};
原创粉丝点击