问题描述
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.
Example 1:
Input: [3,2,1,5,6,4] and k = 2
Output: 5
Example 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.
解题思路
堆排序,建堆O(logn),取前k个,总时间复杂度O(klogn)。
1 | class Solution: |
进阶
快排方法,将比pivot小的移动到pivot左边大的移动到右边,如果结束后pivot位于第k个则pivot即为答案。如果大于k则从pivot左边找,小于则从右边找。
1 | class Solution: |