数组中第K大的数
题目:
已知一个未排序的数组,求这个数组中第K大的数字。
如,array = [3,2,1,5,6,4] , k = 2,return 5
思路图解:
解题代码:
#include <iostream>
#include<queue>
using namespace std;
class MyClass
{
public:
int findKthNum(vector<int>& nums, int k) {
//维护最小堆
priority_queue<int, vector<int>, greater<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()
{
vector<int> nums;
nums.push_back(3);
nums.push_back(2);
nums.push_back(1);
nums.push_back(5);
nums.push_back(6);
nums.push_back(4);
MyClass cls;
int x = cls.findKthNum(nums, 2);
cout << "第二大的数为: " << x << endl;
}