精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

每日算法:前 K 個高頻元素

開發 前端 算法
桶排序 (Bucket sort)的工作的原理:假設輸入數據服從均勻分布,將數據分到有限數量的桶里,每個桶再分別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排)。

 

給定一個非空的整數數組,返回其中出現頻率前 k 高的元素。

示例 1:

  1. 輸入: nums = [1,1,1,2,2,3], k = 2 
  2. 輸出: [1,2] 

示例 2:

  1. 輸入: nums = [1], k = 1 
  2. 輸出: [1] 

提示:

  • 你可以假設給定的 k 總是合理的,且 1 ≤ k ≤ 數組中不相同的元素的個數。
  • 你的算法的時間復雜度必須優于 O(nlogn) , n 是數組的大小。
  • 題目數據保證答案唯一,換句話說,數組中前 k 個高頻元素的集合是唯一的。
  • 你可以按任意順序返回答案。

解法一:map+數組

利用 map 記錄每個元素出現的頻率,利用數組來比較排序元素

代碼實現:

  1. let topKFrequent = function(nums, k) { 
  2.     let map = new Map(), arr = [...new Set(nums)] 
  3.     nums.map((num) => { 
  4.         if(map.has(num)) map.set(num, map.get(num)+1) 
  5.         else map.set(num, 1) 
  6.     }) 
  7.      
  8.     return arr.sort((a, b) => map.get(b) - map.get(a)).slice(0, k); 
  9. }; 

復雜度分析:

  • 時間復雜度:O(nlogn)
  • 空間復雜度:O(n)

題目要求算法的時間復雜度必須優于 O(n log n) ,所以這種實現不合題目要求

解法二:map + 小頂堆

遍歷一遍數組統計每個元素的頻率,并將元素值( key )與出現的頻率( value )保存到 map 中

通過 map 數據構建一個前 k 個高頻元素小頂堆,小頂堆上的任意節點值都必須小于等于其左右子節點值,即堆頂是最小值。

具體步驟如下:

  • 遍歷數據,統計每個元素的頻率,并將元素值( key )與出現的頻率( value )保存到 map 中
  • 遍歷 map ,將前 k 個數,構造一個小頂堆
  • 從 k 位開始,繼續遍歷 map ,每一個數據出現頻率都和小頂堆的堆頂元素出現頻率進行比較,如果小于堆頂元素,則不做任何處理,繼續遍歷下一元素;如果大于堆頂元素,則將這個元素替換掉堆頂元素,然后再堆化成一個小頂堆。
  • 遍歷完成后,堆中的數據就是前 k 大的數據

代碼實現:

  1. let topKFrequent = function(nums, k) { 
  2.     let map = new Map(), heap = [,] 
  3.     nums.map((num) => { 
  4.         if(map.has(num)) map.set(num, map.get(num)+1) 
  5.         else map.set(num, 1) 
  6.     }) 
  7.      
  8.     // 如果元素數量小于等于 k 
  9.     if(map.size <= k) { 
  10.         return [...map.keys()] 
  11.     } 
  12.      
  13.     // 如果元素數量大于 k,遍歷map,構建小頂堆 
  14.     let i = 0 
  15.     map.forEach((value, key) => { 
  16.         if(i < k) { 
  17.             // 取前k個建堆, 插入堆 
  18.             heap.push(key
  19.             // 原地建立前 k 堆 
  20.             if(i === k-1) buildHeap(heap, map, k) 
  21.         } else if(map.get(heap[1]) < value) { 
  22.             // 替換并堆化 
  23.             heap[1] = key 
  24.             // 自上而下式堆化第一個元素 
  25.             heapify(heap, map, k, 1) 
  26.         } 
  27.         i++ 
  28.     }) 
  29.     // 刪除heap中第一個元素 
  30.     heap.shift() 
  31.     return heap 
  32. }; 
  33.  
  34. // 原地建堆,從后往前,自上而下式建小頂堆 
  35. let buildHeap = (heap, map, k) => { 
  36.     if(k === 1) return 
  37.     // 從最后一個非葉子節點開始,自上而下式堆化 
  38.     for(let i = Math.floor(k/2); i>=1 ; i--) { 
  39.         heapify(heap, map, k, i) 
  40.     } 
  41.  
  42. // 堆化 
  43. let heapify = (heap, map, k, i) => { 
  44.     // 自上而下式堆化 
  45.     while(true) { 
  46.         let minIndex = i 
  47.         if(2*i <= k && map.get(heap[2*i]) < map.get(heap[i])) { 
  48.             minIndex = 2*i 
  49.         } 
  50.         if(2*i+1 <= k && map.get(heap[2*i+1]) < map.get(heap[minIndex])) { 
  51.             minIndex = 2*i+1 
  52.         } 
  53.         if(minIndex !== i) { 
  54.             swap(heap, i, minIndex) 
  55.             i = minIndex 
  56.         } else { 
  57.             break 
  58.         } 
  59.     } 
  60.  
  61. // 交換 
  62. let swap = (arr, i , j) => { 
  63.     let temp = arr[i] 
  64.     arr[i] = arr[j] 
  65.     arr[j] = temp 

復雜度分析:

  • 時間復雜度:遍歷數組需要 O(n) 的時間復雜度,一次堆化需要 O(logk) 時間復雜度,所以利用堆求 Top k 問題的時間復雜度為 O(nlogk)
  • 空間復雜度:O(n)

解法三:桶排序

這里取前k個高頻元素,使用計數排序不再適合,在上題目中使用計數排序,將 i 元素出現的次數存儲在 bucket[i] ,但這種存儲不能保證 bucket 數組上值是有序的,例如 bucket=[0,3,1,2] ,即元素 0 未出現,元素 1 出現 3 次,元素 2 出現 1 次,元素 3 出現 2 次,所以計數排序不適用于取前k個高頻元素,不過,不用怕,計數排序不行,還有桶排序。

桶排序是計數排序的升級版。它也是利用函數的映射關系。

桶排序 (Bucket sort)的工作的原理:假設輸入數據服從均勻分布,將數據分到有限數量的桶里,每個桶再分別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排)。

  • 首先使用 map 來存儲頻率
  • 然后創建一個數組(有數量的桶),將頻率作為數組下標,對于出現頻率不同的數字集合,存入對應的數組下標(桶內)即可。

代碼實現:

  1. let topKFrequent = function(nums, k) { 
  2.     let map = new Map(), arr = [...new Set(nums)] 
  3.     nums.map((num) => { 
  4.         if(map.has(num)) map.set(num, map.get(num)+1) 
  5.         else map.set(num, 1) 
  6.     }) 
  7.      
  8.     // 如果元素數量小于等于 k 
  9.     if(map.size <= k) { 
  10.         return [...map.keys()] 
  11.     } 
  12.      
  13.     return bucketSort(map, k) 
  14. }; 
  15.  
  16. // 桶排序 
  17. let bucketSort = (map, k) => { 
  18.     let arr = [], res = [] 
  19.     map.forEach((value, key) => { 
  20.         // 利用映射關系(出現頻率作為下標)將數據分配到各個桶中 
  21.         if(!arr[value]) { 
  22.             arr[value] = [key
  23.         } else { 
  24.             arr[value].push(key
  25.         } 
  26.     }) 
  27.     // 倒序遍歷獲取出現頻率最大的前k個數 
  28.     for(let i = arr.length - 1;i >= 0 && res.length < k;i--){ 
  29.         if(arr[i]) { 
  30.             res.push(...arr[i]) 
  31.         } 
  32.  } 
  33.  return res 

復雜度分析:

  • 時間復雜度:O(n)
  • 空間復雜度:O(n)

leetcode:https://leetcode-cn.com/problems/top-k-frequent-elements/solution/javascript-qian-k-ge-gao-pin-yuan-su-by-user7746o/ 

責任編輯:武曉燕 來源: 三分鐘學前端
相關推薦

2025-04-03 09:56:40

Python算法開發

2021-09-08 09:52:34

語言

2021-10-29 07:25:32

螺旋矩陣整數

2021-11-19 07:54:40

前端

2021-11-12 09:44:03

字符串算法復雜度

2021-10-28 19:33:36

矩陣圖像內存

2021-08-30 14:34:10

有效算法字符

2020-08-16 12:38:32

Python算法編程

2018-11-08 16:18:07

JavaScript前端

2021-09-03 09:41:36

字符串時間復雜度

2021-11-04 09:59:03

動態規劃策略

2021-09-30 09:58:14

路徑總和二叉樹

2021-12-07 06:55:17

節流函數Throttle

2021-09-29 10:19:00

算法平衡二叉樹

2021-10-27 10:43:36

數據流中位數偶數

2021-12-09 10:57:19

防抖函數 Debounce

2014-11-28 16:08:33

射頻識別RFID

2021-09-10 08:31:54

翻轉字符串單詞

2021-09-02 09:22:13

算法無重復字符

2024-05-27 00:05:00

點贊
收藏

51CTO技術棧公眾號

3d精品h动漫啪啪一区二区| 亚洲成年人影院在线| 一区在线电影| 精品人妻一区二区三区麻豆91| 国内精品久久久久久久影视麻豆| 亚洲第一级黄色片| 成人性视频欧美一区二区三区| 免费黄网在线观看| 亚洲免费毛片| 欧美人妖巨大在线| 免费观看国产精品视频| 99se视频在线观看| yourporn久久国产精品| 国产狼人综合免费视频| 国产真实夫妇交换视频| 成人av资源电影网站| 欧美精品一区二区三区很污很色的| 看欧美ab黄色大片视频免费| 污污片在线免费视频| 国产亚洲综合色| 好看的日韩精品视频在线| 中文字幕永久免费视频| 野花国产精品入口| 欧美大尺度在线观看| 亚洲色成人网站www永久四虎| 视频一区在线| 欧美日本一区二区三区| 日韩精品一区中文字幕| 538在线视频| 亚洲人精品一区| 色播五月综合| 精品国产青草久久久久96| 亚洲午夜激情在线| 美女国内精品自产拍在线播放| 日韩精品无码一区二区三区久久久| 日韩在线成人| 制服丝袜日韩国产| www.涩涩涩| 欧美magnet| 欧美日韩国产一中文字不卡 | www.日本一区| 外国成人直播| 一本久久a久久免费精品不卡| 免费看毛片的网址| 天堂8中文在线| 亚洲欧美国产77777| 亚洲人久久久| 91精品国产91久久久久游泳池 | 性高潮久久久久久久久| 免费在线高清av| 91欧美激情一区二区三区成人| 国内精品视频一区| 亚洲一区二区91| 激情另类综合| 97人人做人人爱| 日韩av电影网| 午夜亚洲性色福利视频| 奇门遁甲1982国语版免费观看高清| 国产午夜福利一区二区| 亚洲区欧美区| 亲子乱一区二区三区电影| 天堂网av手机版| 久久久久久婷| 国产欧美日韩免费| 一级特黄aa大片| 国内精品伊人久久久久av一坑 | 视频精品导航| 精品视频全国免费看| 男人添女人下面免费视频| 亚洲精品三区| 精品黑人一区二区三区久久| 中文字幕 亚洲一区| 国产传媒欧美日韩成人精品大片| 在线观看久久久久久| 日本 欧美 国产| 欧美日韩精品| 欧美在线播放视频| 在线观看一二三区| 国精产品一区一区三区mba桃花| 亚洲综合大片69999| 日本网站免费观看| 久久久一二三| 成人网址在线观看| 亚洲精品成人区在线观看| 丝袜美腿亚洲一区| 成人精品视频久久久久| 亚洲av无码国产综合专区| aaa欧美日韩| 少妇免费毛片久久久久久久久| 麻豆视频在线| 午夜精品久久久久久久久| 亚洲五月天综合| 色播一区二区| 亚洲图片在线综合| 欧美日韩午夜视频| 午夜亚洲精品| 高清国产一区| 免费在线你懂的| 精品毛片网大全| www.五月天色| 国产成人精品999在线观看| 欧美成人午夜免费视在线看片| 国产成人在线观看网站| 激情五月激情综合网| 裸模一区二区三区免费| 99自拍视频在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 九九99玖玖| 在线视频1区2区| 午夜精品在线看| 午夜国产福利在线观看| 亚洲人成亚洲精品| 欧美激情亚洲激情| 国产乱子伦精品无码码专区| 久久综合国产精品| 丰满的少妇愉情hd高清果冻传媒| 欧美韩国日本| 亚洲无限av看| 人妻 日韩精品 中文字幕| 风间由美一区二区三区在线观看| 亚洲午夜激情| 色婷婷综合久久久中字幕精品久久| 欧美一区二区三区思思人| 日韩影视一区二区三区| 免费在线日韩av| 国产亚洲自拍偷拍| 草美女在线观看| 制服.丝袜.亚洲.另类.中文| 免费看的黄色网| 久久婷婷激情| 欧美日韩一区二区三区在线观看免| 男女免费观看在线爽爽爽视频| 欧美高清激情brazzers| 老司机深夜福利网站| 日韩精品电影在线观看| 欧美日本韩国一区二区三区| 欧亚av在线| 亚洲精品720p| 日产精品久久久久| av亚洲产国偷v产偷v自拍| 国产精品igao激情视频| 蜜桃精品视频| 九九热这里只有精品6| 三级影片在线看| 激情深爱一区二区| 一级全黄肉体裸体全过程| 成人亚洲网站| 中文字幕日本欧美| 中文字字幕在线观看| 日本一区二区免费在线| 91色国产在线| 久久国产精品亚洲人一区二区三区 | 麻豆视频观看网址久久| 亚洲国产精品久久久久婷婷老年 | 国产精品毛片在线看| 国产精品一区二区三区观看 | 亚洲一二三专区| 人妻激情偷乱视频一区二区三区| 欧美一区二区三区另类| 97人人模人人爽人人喊38tv| 免费在线观看av电影| 亚洲成人av在线播放| 日本熟妇乱子伦xxxx| 92国产精品观看| 国产乱子夫妻xx黑人xyx真爽| 在线观看欧美理论a影院| 国产成人精品国内自产拍免费看| 在线观看日韩一区二区| 国产精品久久毛片av大全日韩| 天天干天天av| 红桃视频欧美| 裸体丰满少妇做受久久99精品| 日韩美女在线看免费观看| 最新的欧美黄色| www.五月天激情| 欧美日韩另类在线| 国产在线综合视频| 国产一本一道久久香蕉| 精品久久一二三| 欧美理论电影大全| 91福利入口| 天堂资源在线| 在线电影中文日韩| 亚洲成a人片在线| 色哟哟一区二区三区| 国产精品成人69xxx免费视频| 懂色中文一区二区在线播放| 成人在线观看黄| 1024精品久久久久久久久| 国产一区二区不卡视频在线观看| 综合在线影院| 欧美精品做受xxx性少妇| 天堂av在线免费观看| 欧美日本不卡视频| 成人免费a视频| 亚洲欧美视频在线观看| 少妇按摩一区二区三区| 国产传媒日韩欧美成人| 好男人www社区| 黄色综合网站| 亚洲高清在线观看一区| 国产在线播放精品| 91精品久久久久久久久久入口| 黄色在线观看www| 大胆欧美人体视频| 国产精品二线| 亚洲国产私拍精品国模在线观看| 中文字幕av在线免费观看| 亚洲大尺度视频在线观看| 日本网站在线看| 久久性天堂网| 久久av喷吹av高潮av| 久久最新网址| 国产精品久久久久久久9999 | 国产99视频在线观看| 污污的网站在线免费观看| 国产一区二区三区在线播放免费观看 | 欧美一区二区三区婷婷月色 | 在线观看v片| 欧美高清性猛交| 蜜桃视频网站在线| 中文字幕欧美日韩| 欧洲亚洲在线| 日韩精品极品视频免费观看| 亚洲国产精品suv| 欧美一区二区三区视频免费播放| 国产精品露脸视频| 在线看国产一区二区| 免费观看一区二区三区毛片| 亚洲影视资源网| 黄色一级片在线免费观看| 中文字幕一区二区三区乱码在线| 国产99在线 | 亚洲| 国产午夜久久久久| 欧美亚一区二区三区| 97se亚洲国产综合自在线| 韩国av中国字幕| 国产精品亚洲一区二区三区妖精 | 99国产精品久久久| youjizz.com国产| 成人av在线观| 国产精品300页| 91在线精品一区二区三区| 黄色免费视频网站| 91看片淫黄大片一级在线观看| 添女人荫蒂视频| 久久影院视频免费| 中文字幕被公侵犯的漂亮人妻| 92国产精品观看| 中文字幕第20页| 国产欧美日韩视频在线观看| 国产aⅴ激情无码久久久无码| 久久综合成人精品亚洲另类欧美 | 久久久久久久久丰满| 中文字幕超清在线免费观看| 亚洲一本二本| 真人抽搐一进一出视频| 香蕉久久夜色精品| 成年人在线观看视频免费| 老司机免费视频一区二区| 在线免费黄色小视频| 成人性生交大片免费| 亚洲综合自拍网| 国产午夜亚洲精品午夜鲁丝片| 青青操在线播放| 亚洲精选视频免费看| 日操夜操天天操| 欧美视频精品在线| 999久久久久| 精品国产成人在线影院| 三级av在线播放| 色系列之999| 亚洲小说区图片区都市| 91av在线免费观看| www.久久.com| 99精品国产高清一区二区| 日韩av影院| 五码日韩精品一区二区三区视频| 亚洲成人二区| 777久久久精品一区二区三区| 男男视频亚洲欧美| 久久国产免费视频| 国产区在线观看成人精品| 免费看一级大片| 狠狠久久亚洲欧美专区| 中文字幕在线观看国产| 欧美变态tickling挠脚心| 黄色片视频在线观看| 欧美成年人在线观看| 樱花草涩涩www在线播放| 川上优av一区二区线观看 | 性欧美精品一区二区三区在线播放 | 91视频 -- 69xx| 麻豆精品一区二区三区| 日韩无码精品一区二区| 国产精品久久久久久亚洲毛片 | 国产日韩一区| 99九九精品视频| 久久亚洲捆绑美女| 欧美国产精品一二三| 欧美性大战久久久| 人妻精品一区二区三区| 精品国产一区二区三区四区在线观看 | 最新欧美精品一区二区三区| 91视频免费网址| 日韩一卡二卡三卡国产欧美| 第一福利在线| 91国产美女视频| 日韩一区二区三区色| 偷拍视频一区二区| 亚洲影视在线| 亚洲av无码一区东京热久久| 中文字幕在线观看不卡| 91精品国产综合久久久蜜臀九色| 欧美大片在线观看一区| 国产精品国产一区二区三区四区| 亚洲毛片在线免费观看| 国产白丝在线观看| 亚洲一区二区三区在线视频| 成人羞羞网站入口免费| 国产91对白刺激露脸在线观看| 国产福利一区在线观看| 国产午夜精品理论片| 欧美日韩一区三区四区| 国产黄在线观看| 热久久美女精品天天吊色| 日本中文字幕在线一区| 隔壁人妻偷人bd中字| 国产精品一品二品| www.xxxx日本| 在线播放国产精品二区一二区四区| 国产黄在线观看| 国产精品精品视频| 精品国产乱码久久久久久果冻传媒 | 天堂精品一区二区三区| 视频在线观看国产精品| 国产精品亚洲无码| 欧美日韩一区二区精品| 外国精品视频在线观看| 97色在线观看免费视频| 都市激情久久| 国精产品一区一区三区视频| 99视频一区二区三区| 国产性xxxx高清| 亚洲精品一区二区三区不| 亚洲精品一区| 热re99久久精品国产99热| 日韩精品首页| 午夜欧美福利视频| 国产精品久久久久国产精品日日| 中文资源在线播放| 少妇av一区二区三区| 欧美成人福利| 日韩精品一区二区三区电影| 国产精品一品二品| 国产奶水涨喷在线播放| 日韩理论片久久| 九九九伊在线综合永久| 中文字幕欧美日韩一区二区三区| 九九热在线视频观看这里只有精品| 最新一区二区三区| 精品少妇一区二区三区免费观看| 成人一级福利| 欧美一区二区三区四区五区六区| 美女www一区二区| 九九九久久久久| 亚洲女人被黑人巨大进入al| 成人国产精品一区二区免费麻豆| 久久久国产精华液999999| 成人综合婷婷国产精品久久| 中文字幕第15页| 色偷偷偷亚洲综合网另类| 日韩在线亚洲| 99久久久无码国产精品6| 国产精品少妇自拍| www.国产免费| 欧亚精品中文字幕| 国产精品国内免费一区二区三区| 绯色av蜜臀vs少妇| 色综合久久88色综合天天6| 色欧美激情视频在线| 国产精品久久国产精品| 老鸭窝毛片一区二区三区| 日本精品在线免费观看| 国产丝袜一区视频在线观看 | 国产亚洲毛片| 中文字幕乱码av| 亚洲国产天堂久久国产91| 国产经典一区| 欧美一区二区激情| 中文字幕成人在线观看| 亚洲精品成av人片天堂无码| 国产精品国产自产拍高清av水多| 欧美精品1区| 五月天精品在线| 欧美精品一区视频| 日本国产亚洲| 国产一区亚洲二区三区| 一区二区三区四区高清精品免费观看 | 麻豆国产精品|