Leetcode 215. Kth Largest Element in an Array
题目描述:返回第K大的数字。
Leetcode 215. Kth Largest Element in an Array
思路:堆排,建立大顶堆,从小到大排序,找到第K大的。初步思路要有heapfy
函数以及建堆函数。len
全局长度是len 然后整除 // 然后left +1 +2 下标0开始。
代码如下:
class Solution:
def buildMaxheap(self,arr):
for i in range(self.l//2,-1,-1):
self.heapfy(arr,i)
def heapfy(self,arr,idx):
left = 2 * idx + 1
right = 2* idx + 2
largest = idx
if left < self.l and arr[left] > arr[largest]:
largest = left
if right < self.l and arr[right] > arr[largest]:
largest = right
if(largest != idx):
arr[idx],arr[largest] = arr[largest],arr[idx]
self.heapfy(arr,largest)
def heapSort(self,arr,k):
self.l = len(arr)
self.buildMaxheap(arr)
for i in range(len(arr)-1,len(arr)-k-1,-1):
arr[0],arr[i] = arr[i],arr[0]
self.l -= 1
self.heapfy(arr,0)
# print(arr)
return arr[-k]
def findKthLargest(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
return self.heapSort(nums,k)
# return ans