- 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].
这个办法是先哈希,再排序,等过段时间实现小根堆的算法。
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var topKFrequent = function(nums, k) {
//hash来整理数字
var sv = {};
var ll = nums.length;
for(var i=0;i<ll;i++){
if(typeof(sv[nums[i]])==="undefined"){
sv[nums[i]]=1;
}else{
sv[nums[i]]+=1;
}
}
var arr = [];
for(var key in sv){
var obj = {};
obj.num = key;
obj.count = sv[key];
arr.push(obj);
}
//利用大根堆排序
var cmp=function(a,b){
return a.count> b.count? - 1:1;
}
arr.sort(cmp);
var res=[];
for(i=0;i<k;i++){
res.push(parseInt(arr[i].num));
}
return res;
};