LeetCode 347 前K個高頻元素

2021-09-25 05:57:40 字數 781 閱讀 2583

347. 前 k 個高頻元素

給定乙個非空的整數陣列,返回其**現頻率前k高的元素。

示例 1:

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

輸入:nums = [1], k = 1輸出:[1]
說明:

解題思路:

1.排序法:使用unordered_map儲存資料統計頻次,然後排序(時間複雜度看排序演算法)            

時間複雜度:o(nlogn),n 表示陣列長度。首先,遍歷一遍陣列統計元素的頻率,這一系列操作的時間複雜度是 o(n);接著,排序演算法時間複雜度為o(nlogn) ;因此整體時間複雜度為 o(nlogn) 。

空間複雜度:o(n),最極端的情況下(每個元素都不同),用於儲存元素及其頻率的 map 需要儲存 n 個鍵值對。

2.最小堆:使用priority_queue優先佇列(時間複雜度優於nlogn)

解題**:

1.2.

class solution 

}else

}vectorres;

while(!pq.empty())

return res;

}};

參考:

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