LeetCode 215. 数组中的第K个最大元素
小根堆
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int,vector<int>,greater<int>> q;
for(auto x:nums)
{
if(q.size()<k)
q.push(x);
else if(q.top()<x)
{
q.pop();
q.push(x);
}
}
return q.top();
}
};
大根堆
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int,vector<int>> q;
for(auto x:nums)
q.push(x);
int t=k-1;
while(t--)
q.pop();
return q.top();
}
};
快速排序
class Solution {
public:
int quick(vector<int>& q, int k,int l,int r)
{
if(l==r) return q[r];
int x=q[(l+r)>>1];
int i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
int cnt=j-l+1;
if(k<=cnt)//答案在左边
return quick(q,k,l,j);
else return quick(q,k-cnt,j+1,r);
}
int findKthLargest(vector<int>& nums, int k) {
return quick(nums,nums.size()-k+1,0,nums.size()-1);
}
};
有帮助的话可以点个赞,我会很开心的~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?