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

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务