描述
在数组中找到第 k 大的元素。
你可以交换数组中的元素的位置。
样例
样例 1:
输入:
k = 1
nums = [1,3,4,2]
输出:
4
解释:第一大的元素是4。
样例 2:
输入:
k = 3
nums = [9,3,2,4,8]
输出:
4
解释:第三大的元素是4。
题目比较简单,直接上代码。
public class Solution {
public int kthLargestElement(int n, int[] nums) {
getN(nums,0,nums.length-1,n);
return nums[nums.length-n];
}
public void getN(int[] nums,int low,int hight,int n){
if (low>=hight) return;
int partion = partion(nums,low,hight);
if (partion==nums.length-n){
return;
}
getN(nums,low,partion,n);
getN(nums,partion+1,hight,n);
}
public int partion(int[] nums,int low,int hight){
int temp = nums[low];
while (low<hight){
while (low<hight&&nums[hight]>=temp){
hight--;
}
nums[low] = nums[hight];
while (low<hight&&nums[low]<=temp){
low++;
}
nums[hight] = nums[low];
}
nums[hight] = temp;
return hight;
}
}