题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
解题思路:
使用快速排序
#include <vector>
class Solution {
public:
int Partition(vector<int> &nums,int low,int high)
{
int pioviate = nums[low];
while(low < high)
{
while(low < high && pioviate >= nums[high])
high--;
nums[low] = nums[high];
while(low < high && pioviate <= nums[low])
low++;
nums[high] = nums[low];
}
nums[low] = pioviate;
return low;
}
int findKth(vector<int> a, int n, int K) {
// write code here
int low = 0;
int high = n-1;
while(1)
{
int pioviate = Partition(a, low, high);
if(pioviate == K-1)
return a[pioviate];
else if(pioviate < K-1)
{
low = pioviate +1;
}
else {
high = pioviate -1;
}
}
}
};
查看9道真题和解析