Leetcode 347 前 K 個高頻元素

2021-10-06 16:48:57 字數 1687 閱讀 4999

筆者以c++方式解決。

#include

"iostream"

using namespace std;

#include

"algorithm"

#include

"vector"

#include

"queue"

#include

"set"

#include

"map"

#include

"string"

#include

"stack"

class solution

public:

vector<

int>

topkfrequent

(vector<

int>

&nums,

int k)

/** * 將整數陣列,頻率前 k 高的元素儲存到 結果陣列中

* @param nums

* @param k

*/void

dealchen

(vector<

int>

&nums,

int k)

else

}// 將 map 轉化成 vector 陣列

vector

vec(dp_map.

begin()

, dp_map.

end())

; dp_map.

clear()

;// 按照值排序 (從大到小)

sort

(vec.

begin()

, vec.

end(

), solution:

:cmp_by_value)

;int i =0;

//選取 前 k 個元素

for(

auto iter : vec)

// 儲存到結果陣列中

result.

push_back

(iter.first)

; i++;}

}};int

main()

; solution *psolution = new solution;

auto vector1 = psolution->

topkfrequent

(nums,2)

;for

(int i =

0; i < vector1.

size()

;++i)

cout << endl;

system

("pause");

return0;

}

執行結果

有點菜,有時間再優化一下。

難得有時間刷一波leetcode, 這次做乙個系統的記錄,等以後複習的時候可以有章可循,同時也期待各位讀者給出的建議。演算法真的是乙個照妖鏡,原來感覺自己也還行吧,但是演算法分分鐘教你做人。前人栽樹,後人乘涼。在學習演算法的過程中,看了前輩的成果,受益匪淺。

感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!

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