class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
//输入数组和index
//创建随机数种子
srand(time(0));
//返回第k个最大的数的值
return quickSelect(nums,0,nums.size()-1,nums.size()-k);
//nums是输入的数组,输入数组序列的首尾序号,以及第k个最大数在数组中的序号
}
int quickSelect(vector<int>& a,int l,int r,int index){
//编辑快速排序子函数
//首先在数组中选取随机一个数将原数组分割为两个,并排序
int q = randomPartition(a,l,r);
//判断,如果返回的序号与index相同,则直接返回,否则重新分割,排序
if (q == index){
return a[q];
}
else{
return q < index ? quickSelect(a, q+1, r, index):quickSelect(a, l, q-1, index);
}
}
inline int randomPartition(vector<int>& a,int l,int r){
//选取【l,r】之间的随机整数,并将选取的数放置在数组尾部
int i = rand()%(r-l+1)+l;
swap(a[i],a[r]);
return partition(a,l,r);
}
inline int partition(vector<int>& a,int l,int r){
int x = a[r];
int i = l-1;
//遍历,排序
for(int j = l;j<r;++j){
if(a[j]<=x){
swap(a[++i],a[j]);
}
}
//随机数插入原位
swap(a[i+1],a[r]);
return i+1;
}
};
数组中第k个最大元素
原创
©著作权归作者所有:来自51CTO博客作者一叶孤舟渡的原创作品,请联系作者获取转载授权,否则将追究法律责任
数组中第k个最大元素
https://blog.51cto.com/u_15652881/5322855
数组中第k个最大元素
https://blog.51cto.com/u_15652881/5322855
下一篇:爬虫-爬取彼岸壁纸
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java数组
文章目录Java 数组定义访问数组的元素更改数组元素数组长度循环遍历数组Java 数组定义数组用于在单个变量中存储多个值
java bash 开发语言 数组 遍历数组 -
C语言 数组
数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,
数组 c语言 数组名 -
数组中的第K个最大元素
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数=nums.length[i]通过次数459,425提交次数.
leetcode 排序算法 算法 数组 数组排序 -
53.最大子数组和
53.最大子数组和给你一个整数数组 nums,请你找出一个具有最大和的连续子数组(子数组最s递推公式:if dp[i
动态规划 leetcode 算法 子数组 时间复杂度 -
精选力扣500题 第3题 LeetCode 215.数组中的第K个最大元素【c++详细题解】
目录1、题目2、思路13、思路24、代码1、题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素
leetcode 快速排序 数据结构 面试精选算法题 数组