タイトル説明
データ・ストリームの中央値を取得する方法?数値が奇数データストリームから読み込まれた場合、中央値は、ソート後のすべての値の中央に位置しています。偶数値は、データストリームから読み出された場合、中央値は、注文の全ての中間値の後に2つの数の平均値です。
例えば、
[2,3,4]の中央値は3である
[2,3]中央値は(2 + 3)/ 2 = 2.5
:2つの操作をサポートするためのデータ構造の設計
ボイドaddNum(NUMのINT ) -データ構造にデータストリームから整数を加えます。
ダブルfindMedian() -すべての要素の現在の中央値を返します。
思考
コード
class MedianFinder:
def __init__(self):
self.store = []
def addNum(self, num:int)->None:
if not self.store:
self.store.append(num)
else:
bisect.insort_left(self.store,num)
def findMedian(self)->float:
n = len(self.store)
if n & 1 == 1:
return self.store[n//2]
else:
return (self.store[n//2] + self.store[n//2]-1)/2
# Your MedianFinder object will be instantiated and called as such:
# obj = MedianFinder()
# obj.addNum(num)
# param_2 = obj.findMedian()