1. 问题
在未排序的数组中找到第k个最大的元素,找到数组排序后的第k个最大的元素。
示例:
输入:
1 | [3,2,3,1,2,4,5,5,6] 和 k=4 |
输出:4
2. 解题思路
类快速排序思想,找到数组中元素的位置,当分界点的索引为k-1的时候,它就是第k大元素,第k小的数只需找(组数长度+1-k)大的数即可。其时间复杂度应小于$O(n\log_2n)$。
1 | class Solution(object): |
3. 其他解法
堆排序方法
在未排序的数组中找到第k个最大的元素,找到数组排序后的第k个最大的元素。
示例:
输入:
1 | [3,2,3,1,2,4,5,5,6] 和 k=4 |
输出:4
类快速排序思想,找到数组中元素的位置,当分界点的索引为k-1的时候,它就是第k大元素,第k小的数只需找(组数长度+1-k)大的数即可。其时间复杂度应小于$O(n\log_2n)$。
1 | class Solution(object): |
堆排序方法
微信支付
支付宝