LeetCode215. 数组中的第K个最大元素(C++)

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4

题目思路:最小堆, 维护一个K大小的最小堆;堆中元素个数小于K时候,新元素直接进堆。否则,堆顶元素小于新元素,弹出堆顶,新元素进入。例子: K=2,则最小堆就是2个元素,堆顶为第二大元素,堆底为最大元素.

下面是我的实现代码

class Solution {
public:
    int findKthLargest(vector& nums, int k) {
        //思路:二叉堆,最小堆
        // 维护一个K大小的最小堆;
        //堆中元素个数小于K时候,新元素直接进堆。
        // 否则,堆顶元素小于新元素,弹出堆顶,新元素进入。
        //例子: K=2,则最小堆就是2个元素,堆顶为第二大元素,堆底为最大元素.
        priority_queue,greater >  small_head;
        int i=0;
        int size=nums.size();
        while (ismall_head.top()){
                small_head.pop();
                small_head.push(nums[i]);
                
            }
            i++;
            
        }
        return small_head.top();
        
    }
};

 

你可能感兴趣的:(LeetCode刷题之栈和队列)