安全プランを証明 - 中央値のデータの流れ

タイトル説明

データ・ストリームの中央値を取得する方法?数値が奇数データストリームから読み込まれた場合、中央値は、ソート後のすべての値の中央に位置しています。偶数値は、データストリームから読み出された場合、中央値は、注文の全ての中間値の後に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

 

公開された82元の記事 ウォンの賞賛2 ビュー4343

おすすめ

転載: blog.csdn.net/qq_22498427/article/details/104983735