当前位置:   article > 正文

703. 数据流中的第K大元素_力扣 703

力扣 703

题目:

思路:

维护一个最小堆,只保留需要的那前K个元素,利用nlargest 然后倒序排列,堆顶是最小就是K个元素中需要的答案,

每次添加元素(更新堆操作):当外部数值val < 堆顶元素时候,忽略不用管,因为它不会造成结果变化(前K个数字不受影响),当val>堆顶元素时候,需要heapreplace 踢出最小值,插入新的值,然后heapify新的值

最后结果,弹出最小值就ok

解答(没有自己写一个堆了,直接用heapq):

  1. class KthLargest:
  2. def __init__(self, k: int, nums):
  3. self.pool = heapq.nlargest(k, nums)[::-1]
  4. self.k = k
  5. def add(self, val: int) -> int:
  6. if len(self.pool) < self.k:
  7. heapq.heappush(self.pool, val)
  8. elif val > self.pool[0]:
  9. heapq.heapreplace(self.pool, val)
  10. return self.pool[0]

参考:

1)heapq --- 堆队列算法: https://docs.python.org/zh-cn/3.9/library/heapq.html

2)https://www.youtube.com/watch?v=yaMwem1K75c

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/204708
推荐阅读
相关标签
  

闽ICP备14008679号