- Top K Frequent Elements
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 mytest{
public :
int value;
int num;
};
class Solution {
public:
static bool MoreThan(const mytest& a, const mytest& b){
return a.num > b.num;
}
vector<int> topKFrequent(vector<int>& nums, int k) {
vector<int >answer;
sort(nums.begin(),nums.end());
vector<mytest> usertest;
int m=1;
if(nums.size()==1){
answer.push_back(nums[0]);
return answer;
}
else{
for(int i=0;i!=nums.size();++i){
if(i==nums.size()){
mytest my;
my.num=m;
my.value=nums[i];
usertest.push_back(my);
}
else {
if(nums[i]==nums[i+1]){
m++;
}
else{
mytest my;
my.num=m;
my.value=nums[i];
usertest.push_back(my);
m=1;
}
}
}
}
sort(usertest.begin(),usertest.end(),MoreThan);
for(int i=0;i<k;i++)
answer.push_back(usertest[i].value);
return answer;
}
};