Heapqを使ってみた
はじめに
pythonのheapqというライブラリを使って,ソートを行う方法を学んだのでメモしました.
heapqとは
- heapq: ヒープキューアルゴリズムを利用できるライブラリ.ヒープキューは優先度キューの一種.全ての親の値が,その全ての子の値以下であるようなツリー構造を持ち,その構造を利用して効率的に要素を取り出す.
- キュー:複数要素の並び
- 優先度キュー:ある優先度に従って要素を取り出す仕組みを持つキュー.
ヒープキューは,主にソートに用いられる(ヒープソート).
実行時間については,
全ての値の大小を比較するバブルソートの場合,$O(N^2)$.
対して,ヒープソートの場合,$O(NlogN)$.
heapqを使って,leetcodeの問題を解いてみた
import heapq
class KthLargest:
def __init__(self, k: int, nums: List[int]):
self.heap = []
self.k = k
for num in nums:
self.add(num)
def add(self, val: int) -> int:
heapq.heappush(self.heap, val)
if len(self.heap) > self.k:
heapq.heappop(self.heap)
return self.heap[0]
Author And Source
この問題について(Heapqを使ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/toshi_machine/items/c9743a86a947db90d0b2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .