寻找数组中第K大的元素

已关闭
dadingPython / C++入场费 2 金币1 次提交

题目描述

给定一个整数数组和整数 k,找出数组中第 k 大的元素。

注意:第 k 大指的是排好序后从大到小第 k 个元素。例如数组 [3,2,1,5,6,4],第 2 大的元素是 5。

要求时间复杂度优于 O(n log n)。

输入格式

第一行两个整数 n 和 k(1 ≤ k ≤ n ≤ 10^5),第二行 n 个整数,绝对值不超过 10^9。

输出格式

一个整数,第 k 大的元素。

输入输出样例

样例 1

输入:

6 2
3 2 1 5 6 4

输出:

5

样例 2

输入:

5 1
2 1 5 3 4

输出:

5

说明/提示

考虑快速选择算法(QuickSelect),平均时间复杂度 O(n)。