leetcode(61)-数组中的第K大的元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
使用random 会极大的降低用时
from random import randint
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
if k > len(nums):
return
index = randint(0,len(nums)-1)
pivot = nums[index]
lt=[i for i in (nums[:index]+nums[index+1:])if i < pivot]
ge=[i for i in (nums[:index]+nums[index+1:])if i >= pivot]
len_lt = len(lt)
len_ge = len(ge)
if len_ge == k -1:
return pivot
elif len_ge< k-1:
return self.findKthLargest(lt,k-1-len_ge)
elif len_ge>= k:
return self.findKthLargest(ge,k)