如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用insert()方法讀取資料流,使用getmedian()方法獲取當前讀取資料的中位數。
class
solution
:def
__init__
(self)
: self.arr =
definsert
(self, num)
: self.arr.sort(
)def
getmedian
(self,s)
: length =
len(self.arr)
if length %2==
1:return self.arr[length //2]
return
(self.arr[length //2]
+ self.arr[length //2-
1])/
2.0
大根堆:large儲存大的半數的資料
小根堆:small儲存小的半數的資料
獲取中位數的時間複雜度為o(1),插入乙個資料的時間複雜度為o(log(n))
牛客66道程式設計題 替換空格
class solution s 源字串 defreplacespace self,s write code here return s.replace 20 class solution s 源字串 defreplacespace self,s write code here s list s 把...
牛客66道程式設計題 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 當只有1個台階時,只有一種跳法,那就是1。當有2個台階時,則有兩種跳法,分別是1 1和2。當有3個台階時,則有3種跳法,分別是1 1 1,1 2和2 1。當有4個台階時,則有5種跳法,...
資料流中的中位數 牛客網
題意理解 求不斷增加數字的陣列中中位數的變化。問題分析 用堆。乙個小頂堆儲存上半部分,乙個大頂堆儲存下半部分 沒插入乙個元素,根據當前元素和堆頂元素的比較選擇乙個堆存放,然後根據兩個堆的數量調整兩邊元素,保證上半部分比下半部分大1.其他插入o lgn 查詢o 1 鏈結priority queue,l...