【快速选择】Leetcode 215. 数组中的第K个最大元素
题目链接
思路
对于给定数组,求解第
基本思路与「快速排序」一致,每次敲定一个基准值
同时利用,利用题目只要求输出第
代码
class Solution{
Random rand = new Random();
public int findKthLargest(int[] nums, int k){
return quickselect(nums, k, 0, nums.length - 1);
}
private int quickselect(int[] nums, int k, int left, int right){
// use random to avoid O(n^2)
int index = rand.nextInt(right - left + 1) + left;
int flag = nums[index];
nums[index] = nums[left];
int i = left, j = right;
while(i < j){
while(i < j && nums[j] <= flag){
j--;
}
nums[i] = nums[j];
while(i < j && nums[i] >= flag){
i++;
}
nums[j] = nums[i];
}
nums[i] = flag;
if(i == k - 1){
return nums[i];
}else if(i < k - 1){
return quickselect(nums, k, i + 1, right);
}else{
return quickselect(nums, k, left, i - 1);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」