前k個高頻元素

2021-10-23 13:49:55 字數 846 閱讀 4053

使用unorderedmap借用雜湊來統計數字出現的頻率,然後題目要求複雜度是nlogn,所以借用multimap來自動排序

,此時因為需要排序所以使用頻率來作為key。最後使用倒迭代器,來將結果壓倒vector中

附註:1.multimap::iterator it1 = st.rbegin();這種寫法會出錯,所以使用

auto it2 = st1.rbegin(); 注意auto的使用

2、雜湊可以用來統計類似數字和頻率這種對應關係,而且可以像題目中隨著頻率增加來統計

#include

#include

#include

using

namespace std;

class

myclass

multimap<

int,

int> st1;

unordered_map<

int,

int>

::iterator it1 = st.

begin()

;for

(; it1 != st.

end();

++it1));

//儲存《頻率,數字》

} vector<

int> res;

auto it2 = st1.

rbegin()

;for

(int i =

0; i < k && it2 != st1.

rend()

;++i,

++it2)

return res;}}

;

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

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

前 K 個高頻元素

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