lc215.数组中的第K大个最大元素 Leetcode quickSort Oct 22, 2020 题目链接 此题与jz040有点相似,不过一个是输出前K小的所有数字,这个是只输出第K大的元素。这个算法的时间复杂度是O(N),空间复杂度因为是原地排序所以是O(1)。 import random class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: t = len(nums)-k l, r = 0, len(nums)-1 while True: index = self.qsort_rec(nums, l, r) if index == t: return nums[index] elif index > t: r = index - 1 else: l = index + 1 def qsort_rec(self, lst, left, right): random_index = random.randint(left, right) lst[left], lst[random_index] = lst[random_index], lst[left] # if left >= right: # return i, j = left, right pivot = lst[i] while i < j: while i < j and lst[j] >= pivot: j -= 1 lst[i] = lst[j] while i < j and lst[i] <= pivot: i += 1 lst[j] = lst[i] lst[i] = pivot return i # self.qsort_rec(lst, left, i-1) # self.qsort_rec(lst, i+1, right) PREVIOUSjz068II.二叉树的最近公共祖先NEXTmq001.最大子序和