解题思路:
class Solution {
public int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}
}
显然, 要用到的是快排
class Solution {
public int findKthLargest(int[] nums, int k) {
quickSort(nums, 0, nums.length - 1, k);
return nums[nums.length - k];
}
public void quickSort(int[] nums, int left, int right, int k){
int v = nums[right];
int l = left;
int r = right;
while(l < r){
while(l < r && nums[l] <= v){
l++;
}
while(l < r && nums[r] >= v){
r--;
}
if(l < r){
int tmp = nums[l];
nums[l] = nums[r];
nums[r] = tmp;
}
}
nums[right] = nums[r];
nums[r] = v;
if(r > nums.length - k){
quickSort(nums, left, r - 1, k);
}else if(r < nums.length - k){
quickSort(nums, r + 1, right, k);
}
}
}