703. Kth Largest Element in a Stream
Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Your KthLargest class will have a constructor which accepts an integer k and an integer array nums, which contains initial elements from the stream. For each call to the method KthLargest.add, return the element representing the kth largest element in the stream.
Example:
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
Note:
You may assume that nums' length ≥ k-1 and k ≥ 1.
题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/
思路
这道题很简单,但做的时候脑袋浆糊一直没有理解题意。。也是服了,以后要早睡了!
总体思路就是一直维护k大小的容器,用于存储最大的k个元素。
可供选择的容器:multiset,priority_queue。(能自动排序的)
class KthLargest {
int K;
multiset<int> st;
public:
KthLargest(int k, vector<int>& nums) {
for (int n : nums) {
st.insert(n);
if (st.size() > k) st.erase(st.begin());
}
K = k;
}
int add(int val) {
st.insert(val);
if (st.size() > K) st.erase(st.begin());
return *st.begin();
}
};

本文介绍了一种在数据流中查找第k大元素的方法,通过维护一个大小为k的multiset,确保能够快速返回当前流中的第k大元素。示例展示了如何使用KthLargest类进行操作。
872

被折叠的 条评论
为什么被折叠?



