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