Leetcode 347 前 K 個高頻元素

2021-09-29 15:20:25 字數 972 閱讀 2179

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

c++求解,利用map記錄每個數字出現的次數,然後用k大小的最小堆選出前k個高頻次。時間複雜度:統計每個數字次數o(n),最小堆篩選前k個需要o(nlog(k)),所以時間複雜度為o(nlog(k))。空間複雜度:map需要o(n),最小堆需要o(k),所以空間複雜度為o(n),實現**如下:

struct comp};

class solution

for(iter = cmap.

begin()

; iter != cmap.

end();

++iter));

else);

}}} vector<

int>

cres

(k,0);

for(

int nidx =

0; nidx < k; nidx++

)return cres;}}

;

執行結果:

通過顯示詳情

執行用時 :

24 ms, 在所有 cpp 提交中擊敗了79.47

% 的使用者

記憶體消耗 :

11.5 mb, 在所有 cpp 提交中擊敗了13.70

%的使用者

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 ...