题目描述:
示例 1:
示例 2:
题目分析:
- 求第k个最大的元素,而不是第 k 个不同的元素。例如数组[5,3,3,2,1]中,第二大,第三大的元素都是3
思路一:
代码实现:
class Solution {
public int findKthLargest(int[] nums, int num) {
Arrays.sort(nums);
int len = nums.length;
return nums[len - num];
}
}
思路二:
代码实现:
class Solution {
public int result = 0;
public int k = 0;
public int findKthLargest(int[] nums, int num) {
k = num;
quickSort(nums, 0, nums.length - 1);
return result;
}
public void quickSort(int[] arr, int start, int end) {
int pivot = arr[start];
int left = start;
int right = end;
while (left < right) {
while (left < right && pivot > arr[right]) {
right--;
}
while (left < right && pivot <= arr[left]) {
left++;
}
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
arr[start] = arr[left];
arr[left] = pivot;
if (left == (k - 1)) {
result = arr[left];
}
if (left > (k - 1)) {
quickSort(arr, start, left - 1);
}
if (left < (k - 1)) {
quickSort(arr, left + 1, end);
}
}
}