LeetCode 前K個高頻元素

2021-09-12 13:19:57 字數 1075 閱讀 5839

給定乙個非空的整數陣列,返回其**現頻率前 k 高的元素。

示例 1:

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

輸出: [1,2]

示例 2:

輸入: nums = [1], k = 1

輸出: [1]

說明:

你可以假設給定的 k 總是合理的,且 1 ≤ k ≤ 陣列中不相同的元素的個數。

你的演算法的時間複雜度必須優於 o(n log n) , n 是陣列的大小。

思路分析:先使用map將元素與其出現的次數關聯,然後將其轉化為pair放入vector容器按照出現的次數進行排序。再從vector容器中讀出前k個元素即可。(時間複雜度為o(n log2n))

class solution 

vectortopkfrequent(vector& nums, int k)

vector> myvec;//first表示的元素,second表示的出現的次數

//將map裡的鍵值對轉換為pair

for (auto it : mymap));

}sort(myvec.begin(), myvec.end(), cmp);//自定義排序,根據second,元素出現的次數

vectorresult;

//從myvec讀出前k個元素的first的即可

當然也可以使用內建的priority_queue

class

solution);

//然後讀出優先佇列的前k個

for(auto i =

0; i < k; i++

)return result;}}

;

Leetcode 前k個高頻元素

思路大概是將陣列中所有元素的頻率記下來,然後統一使用最小堆來管理,將根節點與下乙個元素比較,將頻率更的高元素插入最小堆,同時進行堆排序操作,以此進行管理 在這裡發現原來c 有優先佇列priority queue可以達到相同的效果,優先佇列將權值最大的放在佇列的出口處,這樣就完成了類似的效果 原演算法...

leetcode 前K個高頻元素

給定乙個非空的整數陣列,返回其 現頻率前 k 高的元素。示例 1 輸入 nums 1,1,1,2,2,3 k 2 輸出 1,2 示例 2 輸入 nums 1 k 1 輸出 1 說明 思路 利用資料結構,map來新增。因此map中記錄了nums i 為key,出現的次數count為values。之後通...

leetcode前K個高頻元素c

給定乙個非空的整數陣列,返回其 現頻率前 k 高的元素。示例 1 輸入 nums 1,1,1,2,2,3 k 2 輸出 1,2 示例 2 輸入 nums 1 k 1 輸出 1 說明 你可以假設給定的 k 總是合理的,且 1 k 陣列中不相同的元素的個數。你的演算法的時間複雜度必須優於 o n log...