求前k個高頻元素 map leetcode 347

2021-10-24 11:51:51 字數 771 閱讀 1294

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

輸出: [1,2]

#includeclass solution 

vectortopkfrequent(vector& nums, int k)

};

剛開始使用桶排序,但發現nums中的值可能為負,遂採用mapkey表示此種數字,value代表此種數字的數量。

但又發現沒有現成的函式可以直接排列map的value,所以,將map中資料轉存入vector,並通過自己定義的bool 比較函式使用sort排序。

最後將前k個高頻元素push到answer中。

bool型別的表較函式,return p1.second >= p2.second是錯誤的,並不是代表從大到小。將=去掉。

在類裡面,sort函式在用到my_compare時,若前沒有static,my_compare就會隱含this指標,與sort函式所呼叫的cmp所需變數不同。故報錯。

在寫自己的比較函式時, 引用引數應為 const type &型別。

map型別的初始化方法:

用insert 新增pair型別的元素

map.insert();

map.insert(make_pair(string(「def」),2));

map.insert(pair(string(「ghi」),3));

前 K 個高頻元素, 求Top N

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