給定乙個非空的整數陣列,返回其**現頻率前 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 n) , n 是陣列的大小。
public list
topkfrequent
(int
nums,
int k)
//掃瞄map 維護當前出現頻率最高的k個元素
//在優先佇列中,按照頻率排序,所以資料對是(頻率,元素)的形式
queue
> pq =
newpriorityqueue
<
>
((o1, o2)
->);
for(integer num : map.
keyset()
)}else
} list
res =
newarraylist
<
>()
;while
(!pq.
isempty()
)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...
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 ...
LeetCode 347 前K個高頻元素
347.前 k 個高頻元素 給定乙個非空的整數陣列,返回其 現頻率前k高的元素。示例 1 輸入 nums 1,1,1,2,2,3 k 2輸出 1,2 示例 2 輸入 nums 1 k 1輸出 1 說明 解題思路 1.排序法 使用unordered map儲存資料統計頻次,然後排序 時間複雜度看排序演...