【LeetCode】215. Kth Largest Element in an Array 解题记录
问题描述
Given an integer array nums and an integer k, return the kth largest element in the array.
Note that it is the kth largest element in the sorted order, not the kth distinct element.
测试样例
1 | Input: nums = [3,2,1,5,6,4], k = 2 |
1 | Input: nums = [3,2,3,1,2,4,5,5,6], k = 4 |
说明
1 | 1 <= k <= nums.length <= 10^4 |
解题
思路
寻找第 K
大的数即为寻找递增序的第 length - K
个数。
使用二分法的思想来解决,那么如何确定基准?
根据快排的思想,每一步确定一个元素的位置,并使其左侧元素值不大于该元素,右侧元素值不小于该元素。以该元素作为基准。
-
若目标在基准点右侧,则取右半部分,并更新 k
-
若目标在基准点左侧,则取左半部分
补充:
- 时间复杂度
O(logn)
代码
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哆啦 C 梦!
评论