Leetcode703數據流中的第k大元素
思路: 把這k個元素建一個數據結構,可以方便的讀出來其中最小的,所以可以用隊列中的小頂堆,或者使用set排序應該也可以。以下是優先隊列小頂堆寫法
class KthLargest {
priority_queue<int,vector<int>,greater<int>> q;
int k;
public:
KthLargest(int k, vector<int>& nums) {
this->k=k;
q.push(INT_MIN);
for(auto num:nums)
{
add(num);
}
}
int add(int val) {
int temp=q.top();
if(q.size()<k)
{
q.push(val);
}
else if(val>temp)
{
q.pop();
q.push(val);
}
return q.top();
}
};