#include<iostream>
#include<stack>
#include <vector>
#include<string>
#include<algorithm>
#include<unordered_map>
#include <climits>
#include<queue>
#include<unordered_set>
#include<cctype>
#include <sstream>
#include<set>
using namespace std;
#define maxsize 100
//大根堆
int find(vector<int> nu,int k) {
priority_queue<int, vector<int>> q;
for (auto a : nu) {
q.push(a);
}
for (int i = 0; i < k-1; i++) {
q.pop();
}
return q.top();
}
int main() {
vector<int> nu = { 3,2,1,5,6,4 };
int k = 2;
cout << find(nu, k);
return 0;
}
//小根堆
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int, vector<int>, greater<int>> minHeap;
// 将前 k 个元素插入小根堆
for (int i = 0; i < k; ++i) {
minHeap.push(nums[i]);
}
// 从第 k+1 个元素开始,与堆顶比较,若大于堆顶,则弹出堆顶,插入当前元素
for (int i = k; i < nums.size(); ++i) {
if (nums[i] > minHeap.top()) {
minHeap.pop();
minHeap.push(nums[i]);
}
}
// 返回堆顶元素即为第 k 大的元素
return minHeap.top();
}