题解 | #寻找第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; } } } };