数组中的第K个最大元素
//T1、数组中的第K个最大元素
// 给定整数数组 nums 和 整数k,请返回数组中第 k 个最大的元素。(你必须设计并实现时间复杂度为 O(n)的算法解决此问题)
//
//示例1:
// 输入: [3,2,1,5,6,4], k = 2
// 输出: 5
class Solution
{
public:
int findKthLargest(vector<int>& nums,int k)
{
//建大堆 —— O(N)
priority_queue<int> maxHeap(nums.begin(),nums.end());
// O(logN*k)
while (--k)
{
maxHeap.pop();
}
return maxHeap.top();
}
};
本文介绍了一种使用优先队列实现的算法,可以在O(n)的时间复杂度内找到整数数组中第k个最大的元素。方法是先构建一个大堆,然后弹出k-1个最小元素,最后返回堆顶元素即为第k大的数。
1613

被折叠的 条评论
为什么被折叠?



