在数组中找到第k大的元素
注意
你可以交换数组中的元素的位置
样例
给出数组[9,3,2,4,8],第三大的元素是4
给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
code:
class Solution {
public:
/*
* param k : description of k
* param nums : description of array and index 0 ~ n-1
* return: description of return
*/
int partion(vector<int> &nums,int low,int high){
while(low<high){
while(low<high&&nums[low]>=nums[high]) high--;
swap(nums[low],nums[high]);
while(low<high&&nums[low]>=nums[high]) low++;
swap(nums[low],nums[high]);
}
return low;
}
int quick_k_max(vector<int> &nums,int low, int high, int k){
if(low<=high){
int temp_partion=partion(nums,low,high);
if(temp_partion>k) quick_k_max(nums,low,temp_partion-1,k);
else if(temp_partion<k) quick_k_max(nums,temp_partion+1,high,k);
else return nums[k];
}
}
int kthLargestElement(int k, vector<int> nums) {
// write your code here
int n=nums.size();
int a = quick_k_max(nums,0,n-1,k-1);
return a;
}
};