日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode347 - Top K Frequent Elements - medium

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode347 - Top K Frequent Elements - medium 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Given a non-empty array of integers, return the k most frequent elements.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Note:
* You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
* Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

?

共用部分是用map統計頻次。接下來選出topk頻次有variation。

1.O(nlogk), O(k). 堆。
寫專屬comparator,根據Entry<K, V>里的V也就是本題的頻率排序,讓堆頂始終維持是最小頻率的元素,你最菜,當堆大小過k的時候把你擠走哦!

2.O(n), O(n). bucket sort。要用到頻率最多也就是n的信息+O(n)的空間。 第一遍掃計算頻率 第二遍掃根據頻率把元素值放到對應frequency的bucket里。 第三遍掃bucket,從右往左(從高頻到低頻),湊滿k個元素。 細節: 1.bucket因為不能保證某一頻率只有一元素,所以要用List<Integer>[], generic type初始化特別,要List<Integer>[] buckets = new List[nums.length + 1];注意等號右邊不帶generic?

?

實現1:

class Solution {private class EntryComparator implements Comparator<Map.Entry<Integer, Integer>> {@Override// P2: 要過OJ要聲明一下Map.Entry, 沒辦法只寫Entry,因為不夠普遍吧,沒適配。public int compare(Map.Entry<Integer, Integer> a, Map.Entry<Integer, Integer> b) {return a.getValue() - b.getValue();}}public List<Integer> topKFrequent(int[] nums, int k) {Map<Integer, Integer> freqs = new HashMap<>();for (int num : nums) {freqs.put(num, freqs.getOrDefault(num, 0) + 1);}// 1.PQPriorityQueue<Map.Entry<Integer, Integer>> minHeap = new PriorityQueue<>(new EntryComparator());for (Map.Entry<Integer, Integer> e : freqs.entrySet()) {minHeap.offer(e);if (minHeap.size() > k) {minHeap.poll();}}List<Integer> ans = new ArrayList<>();for (int i = 0; i < k; i++) {// P1:注意加到答案的是key不是entry ans.add(minHeap.poll().getKey());}Collections.reverse(ans);return ans;} }

?

?

實現2:

class Solution {public List<Integer> topKFrequent(int[] nums, int k) {Map<Integer, Integer> freqs = new HashMap<>();for (int num : nums) {freqs.put(num, freqs.getOrDefault(num, 0) + 1);}// 1.bucket sort// P1: 注意這個初始化!List<Integer>[] buckets = new List[nums.length + 1];for (int num : freqs.keySet()) {int frequency = freqs.get(num);if (buckets[frequency] == null) {buckets[frequency] = new ArrayList<>();}buckets[frequency].add(num);}List<Integer> ans = new ArrayList<>();for (int i = buckets.length - 1; i >= 0; i--) {if (buckets[i] == null) {continue;}for (int j = 0; j < buckets[i].size() && k > 0; j++) {ans.add(buckets[i].get(j));k--;}}return ans;} }

?

轉載于:https://www.cnblogs.com/jasminemzy/p/9739815.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的leetcode347 - Top K Frequent Elements - medium的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久乐视频 | 91成人综合 | 免费看片91 | 亚洲图片欧美 | 欧洲亚洲一区 | 97伊人网| 亚洲v国产v | 国产精品一区二区三区不卡 | 激情综合小说 | 亚洲乱码国产乱码精品精软件 | 日本特黄 | 丁香婷婷久久久综合精品国产 | 成年人看的毛片 | 1级av| av制服丝袜在线 | 美女视屏| 色秀av| 内射干少妇亚洲69xxx | 肉大捧一进一出免费视频 | 高清不卡一区二区三区 | 合欢视频在线观看 | 视频这里只有精品 | 久久精品在线视频 | 私密按摩massagexxx | 亚洲av成人无码一二三在线观看 | 亚洲性自拍 | 午夜免费福利在线观看 | 新91在线 | 欧美一级二级在线观看 | 激情av在线播放 | 亚洲精选一区二区三区 | 成人熟女一区二区 | 中文字幕日韩久久 | 国产农村妇女毛片精品 | 国产50页 | 那里有毛片看 | 国产山村乱淫老妇女视频 | 青青草在线观看视频 | 亚洲国产免费看 | 色爽爽一区二区三区 | 男女一进一出视频 | 久久久久亚洲av成人无码电影 | 91精品视频免费 | 91国产丝袜在线播放 | 日韩精品免费观看 | 老司机一区二区 | 欧美体内谢she精2性欧美 | 超碰福利在线 | 日韩福利一区二区三区 | 日韩免费观看av | 婷婷国产视频 | 亚洲狼人天堂 | 精品国产一区二区三区久久久蜜臀 | 337p粉嫩色噜噜噜大肥臀 | 超碰美女 | 日本黄色www | 加勒比久久综合 | 综合色导航 | 高清av网站 | 黄色录象片 | 亚洲综合不卡 | 五月婷综合 | 久草手机在线视频 | 在线免费观看av的网站 | 成年人免费毛片 | 激情国产精品 | 波多野结衣电影免费观看 | 制服诱惑一区 | 看av免费毛片手机播放 | 91人人爱| 一呦二呦三呦精品网站 | 亚洲 欧美 激情 另类 | 日本一区二区三区在线观看 | 视色网站 | 亚洲视频三区 | 日韩性生活视频 | 在线看黄的网站 | 亚洲xxxxx| 国产区91| 中文字幕专区 | 婷婷六月色 | 天堂а√在线中文在线新版 | 久久超碰精品 | 日本精品一区二区三区四区的功能 | 免费在线激情视频 | 美色视频 | 日韩成人影视 | 久久久精品一区二区 | 男人天堂2021 | 亚洲夜色 | 国产露出视频 | 欧美性生活在线视频 | 日韩成人高清视频 | 亚洲妇女无套内射精 | 中文字幕有码在线观看 | 一本高清dvd在线播放 | 精品一区在线 | 不卡av网 | 久草资源在线视频 |