資料流中的中位數(大頂堆和小頂堆)

2021-10-22 10:55:21 字數 1107 閱讀 5689

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。

例如,[2,3,4] 的中位數是 3

[2,3] 的中位數是 (2 + 3) / 2 = 2.5

設計乙個支援以下兩種操作的資料結構:

void addnum(int num) - 從資料流中新增乙個整數到資料結構中。

double findmedian() - 返回目前所有元素的中位數。

示例 1:

輸入:[「medianfinder」,「addnum」,「addnum」,「findmedian」,「addnum」,「findmedian」]

[,[1],[2],,[3],]

輸出:[null,null,null,1.50000,null,2.00000]

示例 2:

輸入:[「medianfinder」,「addnum」,「findmedian」,「addnum」,「findmedian」]

[,[2],,[3],]

輸出:[null,null,2.00000,null,2.50000]

class

medianfinder);

minheap =

newpriorityqueue

<

>

((o1,o2)

->);

}//新增數

public

void

addnum

(int num)

else

}//查詢當前資料中的中位數

public

double

findmedian()

}/**

* your medianfinder object will be instantiated and called as such:

* medianfinder obj = new medianfinder();

* obj.addnum(num);

* double param_2 = obj.findmedian();

*/

LeetCode 堆 資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。例如,2,3,4 的中位數是 3 2,3 的中位數是 2 3 2 2.5 設計乙個支援以下兩種操作的資料結構 示例...

python資料結構 大頂堆和小頂堆

class heap 二叉堆的實現 小頂堆 def init self self.heaplist 0 預設乙個 0 做佔位,使得根節點的索引在 1 上 self.currentsize 0 最大節點的索引位置 def perup self,i 將小節點逐步上公升 while i 2 0 if se...

小頂堆及大頂堆的建立

首先明確堆是乙個完全二叉樹,小頂堆指根結點的值小於或等於左右子節點的值,大頂堆指根結點的值都大於或等於左右子節點的值 關於大小頂堆的建立更詳細的介紹 include include include include include include include include using names...