题解 | #找到数组里的第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; }