题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
本质上可以转换为求第n - K + 1个小的数,这样的话能继续使用堆排序去做,得到的队列的队顶值一定为我们的结果
class Solution {
public:
int findKth(vector<int> a, int n, int K) {
// write code here
//找第k大的数实际上就是找第n-k + 1小的数,所以仍然采用46题的方法进行排序即可
if(a.size() != n) return 0;
priority_queue<int> m_que;
for(int i = 0; i < n; i++)
{
if(m_que.size() < n - K + 1)
{
m_que.push(a[i]);
}
else
{
if(m_que.top() > a[i])
{
//int temp = m_que.top();
m_que.pop();
m_que.push(a[i]);
}
}
}
return m_que.top();
}
};


查看20道真题和解析