求第小的k个数
python 的 heapq 是小根堆,所以需要转化为大根堆会方便处理,即将数组取为负数。
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
if k==0:
return []
hp=[-x for x in arr[:k]]
heapq.heapify(hp)
for i in arr[k:]:
if -hp[0]>i:
heapq.heappop(hp)
heapq.heappush(hp,-i)
return [-x for x in hp]