Julia's BLOG

LeetCode-215 数组中的第k个最大元素

2019-02-13

1. 题面

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

1
2
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5

示例 2:

1
2
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4

2. 解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public int findKthLargest(int[] nums, int k) {
// 方法一 直接调库快排 AC了
// Arrays.sort(nums);
// return nums[nums.length-k];

// 方法二 手写了一个快排 就超时了?? 也不是很懂
return quickSort(nums,0,nums.length-1)[nums.length-k];

}

public int[] quickSort(int[] nums,int _left,int _right) {
int left = _left;
int right = _right;
int tmp = 0; //基准数
if(left <= right) {
while(left != right) {
tmp = nums[left];
while(left < right && nums[right] > tmp)
right --;
nums[left] = nums[right];
while(left < right && nums[left] < tmp)
left ++;
nums[right] = nums[left];
}
}
nums[right] = tmp;
quickSort(nums,_left,left-1);
quickSort(nums,right+1,_right);
return nums;
}
}
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章