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) { 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; } }
|
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏