Leetcode 347 前K個高頻元素

2021-10-17 03:30:50 字數 807 閱讀 5539

問題重述

問題重述:

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

示例 1:

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

示例 2:

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

思路

可以理解為把數字值放給桶裡,然後桶裡面有值。比如給的示例1.

存完以後[1, 3], [2, 2], [3, 1];(數字的值作為下標的那種)。

最後將桶進行排序就可以。可以按照second即頻數作為下標排序,也就是第乙個[1, 3] 說明排序玩的陣列buckets[3] = 1.以此類推,所以最後頻數最大的就在buckets陣列的最後面,最後按照從最大頻數向前數,就可以得到前k個合。

具體看**注釋。

最終**

class

solution

vectorint>>

buckets

(max_count +1)

;for

(const

auto

& p : counts)

vector<

int> ans;

for(

int i = max_count; i >=

0&& ans.

size()

< k;

--i)}}

return ans;}}

;

Leetcode 347 前K個高頻元素

給定乙個非空的整數陣列,返回其 現頻率前k高的元素。示例 1 輸入 nums 1,1,1,2,2,3 k 2 輸出 1,2 示例 2 輸入 nums 1 k 1 輸出 1 說明 首先都要先用hash表統計一次頻率,乙個思路是排序,取前k個元素 第二個思路是使用優先佇列,這裡提供兩種 class so...

Leetcode347 前K個高頻元素

給定乙個非空的整數陣列,返回其 現頻率前 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...

leetcode 347前k個高頻元素

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