题解 | #找到数组里的第k大数(C++)#
找到数组里的第k大数(C++)
https://www.nowcoder.com/practice/2d5e11b766654104ac91a54fe3a9f5db
建立 大小为K的大顶堆,自然堆顶即第K个最大数
#include<bits/stdc++.h>
using namespace std;
int findKthLargest(vector<int>& nums, int k) {
// 大顶堆
// 小顶堆: priority_queue<int, vector<int>, greater<int>> Q;
priority_queue<int> Q;
for (int i = 0; i < nums.size(); i++) {
if (Q.size() < k) Q.push(nums[i]);
else if (Q.top() > nums[i]) {
Q.pop(), Q.push(nums[i]);
}
}
return Q.top();
}
int main() {
int n, k, num;
vector<int> nums;
scanf("%d%d", &n, &k);
// write your code here......
for (int i = 0; i < n; i++) {
scanf("%d", &num);
nums.push_back(num);
}
printf("%d", findKthLargest(nums, k));
return 0;
}
