有人能解释一下这两个函数之间的时间复杂性吗



这两个函数都从数组中找到第k个最大的元素。第一个使用MinHeap找到最大的,而第二个使用MaxHeap。有人能解释一下这两个函数的时间复杂性吗?

from heapq import heappop, heappush, heapify
def findKthLargest1(arr, k): #Using MinHeap
minHeap = []
for num in arr:
heappush(minHeap, num)
if len(minHeap) > k:    
heappop(minHeap)    

return minheap[0]           

def findKthLargest(arr,k):  #Using MaxHeap
maxHeap = []
for num in arr:                  
heappush(maxHeap, num * -1)
for i in range(k):
sol = heappop(maxHeap) * -1
return sol  

两者都具有O(N)空间复杂性,因为我们创建了一个新的数据结构堆

在两者中,我们都只持有";k〃;堆中的项,并仅对k个项进行排序。所以两者都有

T:O(k * log(k))

用于划分的log(k)

k用于比较

最新更新