这道题其实和最小的K个数是一样的做法了~
https://blog.nowcoder.net/n/203599c0c609451c99bd4d1ee4d8b239
class Solution {
public:
int partition(vector<int>&arr,int l,int r)
{
int x = arr[l];
while( l < r )
{
while(l < r && arr[r] <= x) { r--;}
arr[l] = arr[r];
while(l < r && arr[l] > x) { l++;}
arr[r] = arr[l];
}
arr[l] = x;
return l;
}
int findKth(vector<int> a, int n, int K) {
// write code here
vector<int> ans;
int l = 0;
int r = n-1;
int mid = partition(a,l,r);
while(mid != K-1)
{
if(mid > K-1)
{
r = mid-1;
mid = partition(a,l,r);
}
else{
l = mid+1;
mid = partition(a,l,r);
}
}
return a[K-1];
}
};
京公网安备 11010502036488号