347. 前 K 个高频元素
【题解】
- 记录元素出现次数,然后对记录排序
【代码】
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var topKFrequent = function(nums, k) {
let numsMap = new Map()
for(let num of nums){
if(numsMap.has(num)){
numsMap.set(num,numsMap.get(num)+1)
}else{
numsMap.set(num,1)
}
}
let ret = [...numsMap.entries()]
ret.sort((a, b) => b[1] - a[1])
return ret.splice(0,k).map(i=>i[0])
};
451. 根据字符出现频率排序
【题解】
- 记录元素出现次数,然后对记录排序
- 根据元素出现的次数,重组字符串 【代码】
/**
* @param {string} s
* @return {string}
*/
var frequencySort = function(s) {
let map = new Map()
for (let i of s) {
if (map.get(i)) {
map.set(i, map.get(i)+1)
} else {
map.set(i, 1)
}
}
let sortArr = [...map.entries()].sort((a, b) => b[1] - a[1])
let ret = []
for (let arr of sortArr) {
let l = ''
while (arr[1] > 0) {
l+=arr[0]
arr[1]--
}
ret.push(l)
}
return ret.join('')
};