1、题目
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
2、代码
def get_max_k(self,nums,k):
"""思路
利用快速排序,逆序排序后,得到返回数组第k-1个数,复杂度为O(n*log(n))~O(n^2)
python中sort的排序默认为timesort:根据输入的元素的取值范围统计每个元素出现的次数,然后按照统计信息将元素放置到正确的位置上,从而实现排序
"""
def q_sort(nums):#快速排序
if len(nums) <= 1:
return nums
mid = nums[0] # 基准值
left = [nums[i] for i in range(1, len(nums)) if nums[i] < mid]
right = [nums[i] for i in range(1, len(nums)) if nums[i] >= mid]
return q_sort(right) + [mid] + q_sort(left)
nums_order=q_sort(nums)
return nums_order[k-1]