两种实用方法,没啥难点,代码自己看吧
class Solution {
public:
int findKth(vector<int> a, int n, int K) {
multiset<int, greater<int>> multy(a.begin(), a.end());
auto it = multy.begin();
for (int i = 1; i < K; i++) {
it++;
}
return *it;
// 最大堆
priority_queue<int,vector<int>,less<int>> maxHeap;
// 最小堆
priority_queue<int, vector<int>, greater<int>> minHeap;
for (auto it = a.begin(); it != a.end(); it++) {
if (minHeap.size() < K) {
minHeap.push(*it);
} else if (minHeap.top() < *it) {
maxHeap.push(minHeap.top());
minHeap.pop();
minHeap.push(*it);
} else {
maxHeap.push(*it);
}
}
return minHeap.top();
// write code here
}
};