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.
For example,
Given [3,2,1,5,6,4] and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
- O(N) best case / O(N^2) worst case running time + O(1) memory
// povitIndex为数组中任意选中的数的索引
class Solution(object):
def partition(self,nums,start,end):
pivot = nums[end]
temp = start
for i in range(start,end):
if nums[i] < pivot:
#print nums[i]
nums[i],nums[temp] = nums[temp],nums[i]
temp += 1
#print nums,temp
nums[end],nums[temp] = nums[temp],nums[end]
#print nums
return temp
def findKthLargest(self, nums, k):
low = 0
high = len(nums) - 1
k = len(nums) - k
#print k
while low < high:
j = self.partition(nums,low,high)
#print j
if j < k:
low = j + 1
elif j > k:
high = j - 1
else:
break
return nums[k]
'''
nums.sort()
return nums[-k]
'''
"""
:type nums: List[int]
:type k: int
:rtype: int
"""

本文介绍了一种使用快排partition函数的高效算法,用于找出未排序数组中的第K大元素,同时提供了代码实现及复杂度分析。
782

被折叠的 条评论
为什么被折叠?



