描述
在数组中找到第 k 大的元素。
样例
样例 1:
输入:
n = 1, nums = [1,3,4,2]
输出:
4
样例 2:
输入:
n = 3, nums = [9,3,2,4,8]
输出:
4
挑战
要求时间复杂度为O(n),空间复杂度为O(1)。
思路
使用快速排序的思路,第k大的元素就是排序完成之后的第nums.size() - k位置上的元素。
即qSort(nums, 0, nums.size(), nums.size() - n)
根据基准数调换完位置之后,判断k的位置和i j的关系,进行下一轮的调换。
代码
1 | class Solution { |
-------------end of filethanks for reading-------------