leetcode 215. 陣列中的第K個最大元素
阿新 • • 發佈:2019-02-08
題目描述:
在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。
示例 1:
輸入: [3,2,1,5,6,4] 和
k = 2
輸出: 5
示例 2:
輸入: [3,2,3,1,2,4,5,5,6] 和
k = 4
輸出: 4
說明:
你可以假設 k 總是有效的,且 1 ≤ k ≤ 陣列的長度。
程式碼:
class Solution { public: int findKthLargest(vector<int>& nums, int k) { priority_queue<int,vector<int>,greater<int> >q;//從小到大排列 for(auto num:nums){ q.push(num); if(q.size()>k) q.pop(); } return q.top(); } };
註解:
1.優先佇列不寫排序方式預設是小頂堆(元素是從大到小排序),top()是取頭部元素的意思。
2.優先佇列取首部使用top()函式,與棧是一樣的。佇列取首部使用front()函式(取尾部使用back()函式)。
3.優先佇列priority_queue可以存放pair結構,排序方式按pair第一個值排序。
4.訪問map下標和值分別用first和second.