题目:
//方法一,利用优先队列小顶堆greater(大顶堆是less)
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int, vector<int>, greater<int>> q;
for(auto n:nums){
q.push(n);
if(q.size()>k) q.pop();
}
return q.top();
}
};
//方法二,分治快排
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
return traversal(nums, k);
}
int traversal(vector<int>& nums, int k){
int base = nums[rand()%nums.size()];
vector<int> small, equall, big;
for(int n:nums){
if(n>base){
big.emplace_back(n);
}else if(n<base){
small.emplace_back(n);
}else{
equall.emplace_back(n);
}
}
if(k<=big.size()) return traversal(big, k);
else if(big.size()+equall.size()<k) return traversal(small, k-(big.size()+equall.size()));
else return base;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2022-03-10 Mockingbird_pyqt5_ui修改(一)