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