VueBloghyhero6

347 题前K 个高频元素

2023-04-16 / 2023-04-16 / 439次浏览

`/**

  • @param {number[]} nums
  • @param {number} k
  • @return {number[]}
    */
    var topKFrequent = function(nums, k) {
    // 此题使用桶排序分桶 此步骤使用 map 分桶
    let myMap = new Map()
    for (let i = 0; i < nums.length; i++) {
    if (myMap.has(nums[i])) {
    let value = myMap.get(nums[i])
    value++
    myMap.set(nums[i], value)
    } else {
    myMap.set(nums[i], 1)
    }
    }
    // 使用 from 对函数进行一个置换成数组。
    let arrayObj = Array.from(myMap)
    arrayObj.sort(function (a, b) {
    return b[1] - a[1]
    })
    let resultArr = []
    for (let j = 0; j < k; j++) {
    console.log(arrayObj[j])
    resultArr.push(arrayObj[j][0])
    }
    return resultArr
    };`

此题采用 map 进行分桶, 再使用 Array.from 对函数进行置换,最后使用一个数组,把想要的结果取出来。

其实解题的思路还是根据下面这个图: