Leetcode-215. Kth Largest Element in an Array
地址:https://leetcode.com/problems/kth-largest-element-in-an-array/
描述:
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
实例1:
Input: [3,2,1,5,6,4] and k = 2
Output: 5
实例2:
Input: [3,2,3,1,2,4,5,5,6] and k = 4
Output: 4
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
方法:
public int findKthLargest(int[] nums, int k) { int start = 0, end = nums.length - 1, index = nums.length - k; while (start < end) { int pivot = partion(nums, start, end); if (pivot < index) start = pivot + 1; else if (pivot > index) end = pivot - 1; else return nums[pivot]; } return nums[start]; } private int partion(int[] nums, int start, int end) { int pivot = start, temp; while (start <= end) { while (start <= end && nums[start] <= nums[pivot]) start++; while (start <= end && nums[end] > nums[pivot]) end--; if (start > end) break; temp = nums[start]; nums[start] = nums[end]; nums[end] = temp; } temp = nums[end]; nums[end] = nums[pivot]; nums[pivot] = temp; return end; }