215. Kth Largest Element in an Array
题目链接:https://leetcode.com/problems/kth-largest-element-in-an-array/
题目思路是利用快排找到pivot,如果k刚好是pivot,就返回;如果pivot<k,就到右边去找;如果pivot>k,就到左边去找。
class Solution(object):
def findKthLargest(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
def get_pivot(a,left, right):
if left==right:
return left
pivot=left
key=a[pivot]
while left<right:
while a[right]>=key and left!=right:
right-=1
if left<right:
a[left]=a[right]
while a[left]<=key and left!=right:
left+=1
if left<right:
a[right]=a[left]
a[left]=key
return left
def topk(a, k):
def get_res(left, right):
pivot = get_pivot(a, left, right)
if pivot == k:
return a[pivot]
elif k > pivot:
return get_res(pivot+1, right)
else:
return get_res(left, pivot-1)
return get_res(0, len(a) - 1)
l=len(nums)
return topk(nums,l-k)