class Solution {
public:
void reflesh(int *p,int k,int i)
{
int x=p[i];
int s=2*i+1;
while(s<k) {
if((s+1)<k&&p[s+1]<p[s])
{
++s;
}
if(p[s]<x)
{
p[i]=p[s];
i=s;
}else{
break;
}
s=2*i+1;
}
p[i]=x;
return ;
}
int findKthLargest(vector<int>& nums, int k) {
int *heap = new int[k];
int i;
vector<int>::iterator it = nums.begin();
for (i = 0; i<k; ++i, ++it)
{
heap[i] = *it;
}
for (i = (k - 1) / 2; i >= 0; --i)
{
reflesh(heap,k,i);
}
for (; it != nums.end(); ++it)
{
if (*it>heap[0])
{
heap[0]=*it;
reflesh(heap,k,0);
}
}
return heap[0];
}
};
leetcode - 215. Kth Largest Element in an Array
最新推荐文章于 2022-11-01 19:18:38 发布