215. 数组中的第K个最大元素C++

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

猜你喜欢

转载自blog.csdn.net/a15929748502/article/details/88538324
今日推荐