Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Example 1:
Input: [3,2,1,5,6,4]
and k = 2
Output: 5
Example 2:
Input: [3,2,3,1,2,4,5,5,6]
and k = 4
Output: 4
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length
def partition(nums,l,r):
privot = nums[r]
i = l - 1
for j in range(l,r):
if nums[j] >= privot:
i +=1
nums[i],nums[j] = nums[j],nums[i]
nums[i+1],nums[r] = nums[r],nums[i+1]
return i+1
def findKthLargest(nums,k):
l = 0
r = len(nums) - 1
while true:
privot_index = partition(nums,l,r)
if privot_index > k-1:
r = privot_index - 1
elif privot_index < k-1:
l = privot_index + 1
else:
return nums[k-1]