//347
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var topKFrequent = function(nums, k) {
const map = new Map()
for(const value of nums){
map.set(value,(map.get(value)||0)+1)
}
const buckets=Array.from({length:nums.length+1},()=>[])//
//最大出现次数可能等于 nums.length,而数组下标从 0 开始,所以长度要 nums.length + 1
for(const [num,count] of map){
buckets[count].push(num)
}
const res=[]
for(let i=buckets.length-1;i>=0;i--){
for(const num of buckets[i]){
res.push(num)
if(res.length===k){
return res
}
}
}
};
//215
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
const quickSort = (arr) => {
if(arr.length <= 1) return arr
const flag = arr[arr.length - 1]
const left = [], right = []
for(let i = 0; i < arr.length - 1; i++) {
if(arr[i] < flag) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
return [...quickSort(left), flag, ...quickSort(right)]
}
return quickSort(nums)[nums.length - k]
};