Leetcode703.Kth Largest Element in a Stream資料流中的第K大元素
阿新 • • 發佈:2018-11-09
設計一個找到資料流中第K大元素的類(class)。注意是排序後的第K大元素,不是第K個不同的元素。
你的 KthLargest 類需要一個同時接收整數 k 和整數陣列nums 的構造器,它包含資料流中的初始元素。每次呼叫 KthLargest.add,返回當前資料流中第K大的元素。
示例:
int k = 3; int[] arr = [4,5,8,2]; KthLargest kthLargest = new KthLargest(3, arr); kthLargest.add(3); // returns 4 kthLargest.add(5); // returns 5 kthLargest.add(10); // returns 5 kthLargest.add(9); // returns 8 kthLargest.add(4); // returns 8
說明:
你可以假設 nums 的長度≥ k-1 且k ≥ 1。
優先佇列用法部落格:
https://blog.csdn.net/pzhu_cg_csdn/article/details/79166858
class KthLargest { public: priority_queue<int, vector<int>, greater<int> > pq; int cnt; KthLargest(int k, vector<int> nums) { cnt = k; int len = nums.size(); for(int i = 0; i< len; i++) { pq.push(nums[i]); } while(pq.size() > cnt) { pq.pop(); } } int add(int val) { pq.push(val); while(pq.size() > cnt) { pq.pop(); } return pq.top(); } };