タイトル説明
データ・ストリームの中央値を取得する方法?数値が奇数データストリームから読み込まれた場合、中央値は、ソート後のすべての値の中央に位置しています。偶数値は、データストリームから読み出された場合、中央値は、注文の全ての中間値の後に2つの数の平均値です。私たちは、読み込まれ、現在の中央値のデータを取得するためにGetMedian()メソッドを使用して、データ・ストリームを読み取るために挿入()メソッドを使用します。
思考
それぞれは、二分法により、正しい位置に挿入された値を挿入します。
すべての買収は、必要が唯一の配列の長さを決めるの期間の中央値は、奇数または偶数で十分です
PS:python2の内側に、二つの整数を返す整数。だから我々は、その後に加えて、0.0を追加する必要があります
class Solution:
numbers = []
def Insert(self, num):
i = 0
j = len(self.numbers) - 1
while i < j:
mid = int((i+j)/2)
if self.numbers[mid] < num:
i = mid+1
elif self.numbers[mid] > num:
j = mid
else:
i = mid
j = mid
self.numbers.insert(i,num)
def GetMedian(self,x):
leng = len(self.numbers)
if leng % 2 == 1:
return self.numbers[int(leng/2)]
else:
ans = (self.numbers[int(leng/2)] + self.numbers[int(leng/2 -1)] + 0.00)/2
return ans