牛客66道程式設計題 資料流中的中位數

2021-09-27 14:01:29 字數 674 閱讀 9902

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用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...