36 lines
753 B
JavaScript
36 lines
753 B
JavaScript
|
/*
|
|||
|
* @lc app=leetcode id=347 lang=javascript
|
|||
|
*
|
|||
|
* [347] Top K Frequent Elements
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @param {number[]} nums
|
|||
|
* @param {number} k
|
|||
|
* @return {number[]}
|
|||
|
*/
|
|||
|
var topKFrequent = function(nums, k) {
|
|||
|
// 这个算法的瓶颈在于排序算法,时间复杂度基本上是O(nlogn) 空间复杂度是O(n)
|
|||
|
|
|||
|
const hashtable = {};
|
|||
|
const n = nums.length;
|
|||
|
const res = [];
|
|||
|
|
|||
|
for (let i = 0; i < n; i++) {
|
|||
|
const num = nums[i];
|
|||
|
if (hashtable[num] !== void 0) {
|
|||
|
hashtable[num + ""] += 1;
|
|||
|
} else {
|
|||
|
hashtable[num + ""] = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
// sort desc
|
|||
|
const list = Object.entries(hashtable);
|
|||
|
list.sort(([, countA], [, countB]) => countB - countA);
|
|||
|
|
|||
|
for (let i = 0; i < k; i++) {
|
|||
|
res.push(list[i][0]);
|
|||
|
}
|
|||
|
|
|||
|
return res;
|
|||
|
};
|