215. Kth Largest Element in an Array
Medium
8621481Add to ListShare
Given an integer array nums
and an integer k
, return the kth
largest element in the array.
Note that it is the kth
largest element in the sorted order, not the kth
distinct element.
Example 1:
Input: nums = [3,2,1,5,6,4], k = 2 Output: 5
Example 2:
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4 Output: 4
Constraints:
1 <= k <= nums.length <= 104
-104 <= nums[i] <= 104
Accepted
1,245,463
Submissions
1,976,476
import random
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
if not nums: return
pivot=random.choice(nums)
left=[x for x in nums if x>pivot]
mid=[x for x in nums if x==pivot]
right=[x for x in nums if x<pivot]
L,M=len(left),len(mid)
if k<=L:
return self.findKthLargest(left,k)
elif k>L+M:
return self.findKthLargest(right,k-L-M)
else:
return mid[0]
每次会drop掉非常大的一部分
random pivot
注意左边存的大数