题解 | #寻找第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(); } };