劍指offer 63. 資料流中的中位數
阿新 • • 發佈:2018-11-26
題目描述
如何得到一個數據流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取資料流,使用GetMedian()方法獲取當前讀取資料的中位數。
思路:
這道題沒什麼難度,省點事,直接呼叫python list的.sort()
方法,依據len(num)
是奇數還是偶數來輸出中位數;
參考答案:
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.input_list = [] def Insert(self, num): # write code here self.input_list.append(num) self.input_list.sort() def GetMedian(self, M): # write code here length = len(self.input_list) if length % 2 == 0: mid = (self.input_list[length//2] + self.input_list[length//2-1])/2.0 else: mid = self.input_list[length//2] return mid
Note
- 本道題自己開始一直誤以為直接使用
sorted(self.input_list)
就完成了對self.input_list
的排序,實際上是錯誤的,sorted()方法不會對原list進行操作,排序結果需要賦值儲存,只有list.sort()是直接在list上進行排序,無須賦值儲存!