时间复杂度(O(n)),思想:快排
import random class Solution: def findKthLargest(self, nums: [int], k: int) -> int: k, re_start, re_end = k - 1, 0, len(nums) - 1 while True: p_direction, start, end = False, re_start, re_end _index = random.randint(start, end) nums[re_start], nums[_index] = nums[_index], nums[re_start] num_flag = nums[re_start] while start < end: if p_direction: if nums[start] < num_flag: p_direction, nums[end], end = False, nums[start], end - 1 else: start += 1 else: if nums[end] >= num_flag: p_direction, nums[start], start = True, nums[end], start + 1 else: end -= 1 nums[start] = num_flag if start == k: return nums[start] if start < k: re_start = start + 1 else: re_end = start - 1