leetcode-215-数组中的第K个最大元素
//快排辅助
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
k = nums.size() - k +1;
int pos, left = 0, right = nums.size() - 1;
pos = QuickSortHelper(nums, left, right);
while (pos != k-1) {
if (pos < k-1) {
left = pos + 1;
pos = QuickSortHelper(nums, left, right);
}
if (pos > k-1) {
right = pos - 1;
pos = QuickSortHelper(nums, left, right);
}
}
return nums[pos];
}
int QuickSortHelper(vector<int> &nums, int left, int right) {
int std = nums[left], pos = left + 1;
for (int i = left + 1; i <= right; i++) {
//if (nums[i] > std) ;
if (nums[i] <std) {
swap(nums[pos], nums[i]);
pos++;
}
}
swap(nums[left], nums[pos - 1]);
return pos - 1;
}
};
int main()
{
Solution sol;
vector<int> input1 = { 3,2,1,5,6,4 };
//sol.findKthLargest(input1, 2)
cout << sol.findKthLargest(input1, 6);
cout << endl;
return 0;
}