輸入: 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...