在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
# -*- coding:utf-8 -*- def find_k_max(a_list, k): left = 0 right = len(a_list)-1 while left <= right: idx = part(a_list, left, right) if idx == k: return a_list[k] elif idx < k: left = idx+1 else: right = idx-1 return -1 def part(nums, left, right): base = nums[left] i, j = left, right while i < j: while i < j and nums[j] >= base: j -= 1 if i < j: nums[i] = nums[j] while i < j and nums[i] <= base: i +=1 if i < j: nums[j] = nums[i] nums[i] = base return i