力扣刷题-前k个高频元素
生活随笔
收集整理的這篇文章主要介紹了
力扣刷题-前k个高频元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
力扣刷題-前k個高頻元素
題目:
給你一個整數數組 nums 和一個整數 k ,請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。
示例 1:
輸入: nums = [1,1,1,2,2,3], k = 2
輸出: [1,2]
示例 2:
輸入: nums = [1], k = 1
輸出: [1]
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/top-k-frequent-elements
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
這里對這個javascript的二維數組,又給搞蒙了,好像js沒有二維數組,所以如果這樣arr[1][1]是取不到的,會報錯,但是sort,forEach,map里面怎么又可以用了呢,太奇怪了,作為一個極其喜歡用for循環寫題的人極其不理解這種操作。所以是為啥有沒有大佬能指點一下。
今天也是第一次看到原來數組也有map方法,說實話跟ForEach方法很像,只不過forEach永遠返回undefined,然后map返回的東西自己在函數里面寫。
還有就是Map字典為什么不可以map.get(nums[i])直接對它加一,為什么又要set()一次,可以這樣覆蓋掉鍵值嗎,雖然好像必須這樣,有點小奇怪
/*** @param {number[]} nums* @param {number} k* @return {number[]}*/ var topKFrequent = function(nums, k) {var map = new Map()for(var i = 0; i < nums.length; i++){if(map.has(nums[i])){map.set(nums[i],map.get(nums[i])+1)}else{map.set(nums[i],1)}}var list = Array.from(map).sort(function(a,b){ return b[1]-a[1] })//這里注意是return 1,則后面的數放在前面console.log(list)var list = list.slice(0,k)console.log(list)var arr= []list.forEach(function(item){ arr.push(item[0])},this)// return list.map(function(item){// return item[0]// })return arr};總結
以上是生活随笔為你收集整理的力扣刷题-前k个高频元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机类可以挂靠2017,2017年各类
- 下一篇: Laravel Facade的加载过程及