题解 | #寻找第K大# 秒啊
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
class Solution {
// 使用堆 但是 make_heap 很妙 达到复杂度所有要求
// https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D295
public:
int findKth(vector<int> a, int n, int K) {
// write code here
vector<int>::iterator iter;
// int i = 0;
for(iter = a.begin(); K>1; K--)
{
make_heap(iter, a.end(), less<int>()); // 构建大顶堆 是直接在a上操作的 每次把iter, a.end之间的最大值 给 iter 本来的值被交换
iter++; //每构建1次 调整一次起始构建位置
}
make_heap(iter, a.end(), less<int>());
return *iter;
}
};