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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

腾讯面试:前 K 个高频元素

發布時間:2025/6/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腾讯面试:前 K 个高频元素 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:?

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

示例 1:

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

示例 2:

輸入: nums = [1], k = 1 輸出: [1] class Solution { public:static bool cmp(pair<int, int>& m, pair<int, int>& n) {return m.second > n.second;}vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> occurrences;for (auto& v : nums) {occurrences[v]++;}// pair 的第一個元素代表數組的值,第二個元素代表了該值出現的次數priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(&cmp)> q(cmp);for (auto& [num, count] : occurrences) {if (q.size() == k) {if (q.top().second < count) {q.pop();q.emplace(num, count);}} else {q.emplace(num, count);}}vector<int> ret;while (!q.empty()) {ret.emplace_back(q.top().first);q.pop();}return ret;} };

利用小頂堆:

如果堆的元素個數小于 kk,就可以直接插入堆中。
如果堆的元素個數等于 kk,則檢查堆頂與當前出現次數的大小。如果堆頂更大,說明至少有 kk 個數字的出現次數比當前值大,故舍棄當前值;否則,就彈出堆頂,并將當前值插入堆中。

?

參考地址:https://leetcode-cn.com/problems/top-k-frequent-elements/solution/qian-k-ge-gao-pin-yuan-su-by-leetcode-solution/
?

?

總結

以上是生活随笔為你收集整理的腾讯面试:前 K 个高频元素的全部內容,希望文章能夠幫你解決所遇到的問題。

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