""" 中位數是有序列表中間的數。若是列表長度是偶數,中位數則是中間兩個數的平均值。 例如, [2,3,4] 的中位數是 3 [2,3] 的中位數是 (2 + 3) / 2 = 2.5 設計一個支持如下兩種操做的數據結構: void addNum(int num) - 從數據流中添加一個整數到數據結構中。 double findMedian() - 返回目前全部元素的中位數。 來源:力扣(LeetCode) 連接:https://leetcode-cn.com/problems/find-median-from-data-stream 著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。 """ """ author :jiyanjiao date : 2019-10-21 """ class MedianFinder: nuber_list = [] sum = 0 def __init__(self): """ initialize your data structure here. """ def addNum(self, num: int) -> None: self.nuber_list.append(num) def findMedian(self) -> float: nb = self.nuber_list oder_list = [] le = len(nb) if le <=1: raise Exception("中位數至少須要兩位數") for i in range(0, le): for j in range(i+1, le): if nb[j] < nb[i]: tmp = nb[i] nb[i] = nb[j] nb[j] = tmp oder_list.append(nb[i]) print(nb[i]) i += 1 oder_le = len(oder_list) if oder_le % 2 == 0: m1 = (oder_list[int(oder_le/2)]+oder_list[int(oder_le/2)-1])/2 else: m1 = oder_list[int(oder_le/2)] print(m1) return m1 # Your MedianFinder object will be instantiated and called as such: if __name__ == '__main__': obj = MedianFinder() obj.addNum(1) obj.addNum(2) obj.addNum(4) obj.addNum(3) obj.addNum(5) param_2 = obj.findMedian()