Description
Find K-th largest element in an array.
参考快速排序的思想
class Solution:
"""
@param n: An integer
@param nums: An array
@return: the Kth largest element
"""
def sort_info(self,begin,end,nums):
if len(nums)==1:return 0,nums
temp = nums[begin]
less_index = begin
more_index = end
flag = begin
while(less_index< more_index):
while(less_index< more_index and temp>=nums[more_index] and flag!= more_index):
more_index -= 1
while(less_index <= more_index and temp < nums[less_index] and flag != less_index):
less_index += 1
flag = more_index if flag==less_index else less_index
nums[less_index],nums[more_index] = nums[more_index],nums[less_index]
return flag,nums
def kthLargestElement(self, n, nums):
# write your code here
flag,nums = self.sort_info(0,len(nums)-1,nums)
while(1) :
if flag == n-1:
return nums[n-1]
elif flag > n-1:
nums = nums[:flag]
flag,nums = self.sort_info(0,len(nums)-1,nums)
else:
nums = nums[flag+1:]
n = n - flag-1
flag,nums = self.sort_info(0,len(nums)-1,nums)