时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 64M,其他语言128M 热度指数:136270
题目描述
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
示例1
输入
[1,3,5,2,2],5,3
返回值
2
class Solution {
public:
int dfs(vector<int> a,int n,int k,int p)
{
//p为起点,n为终点
//本题易错点,对题目理解有误,第K大,求的是从小到大排列的第n-K+1个数
int i = p,j =n;
while(i!=j)
{
while(i<j&&a[j]>a[i])
j--;
if(i==j) break;
//cout<<"i: "<<i<<" j: "<<j<<endl;
swap(a[i],a[j]);