Q
查找連續中位數
0
A
回答
1
您可以在每個元素的O(logn)中執行此操作。
構建AVL樹(或RBT),將一個指針設置爲中值。現在用完全線程(兩者),父指針來擴充AVL。
插入時間是對數,後繼和前任是恆定操作,因此更新中值指針是恆定時間操作。
父指針加線程可能看起來是多餘的,但這保證了沒有遍歷,中值更新在旋轉階段完成。
優點:只有插入時間很重要。結構是動態的,不需要重新分配數組或移動元素。
缺點:有空間開銷和分配節點。
1
我看不出它可以在更短時間內完成爲O (n)時間。
您將不得不保留一個目前項目的排序列表。每當有新物品到達時,您必須將其插入正確的位置。這將需要O(n)時間。
計算新的中位數是基本的。如果新N是奇數,那麼它是數組[(N-1)/ 2],否則它是 (數組[(N)/ 2] +數組[(N)/ 2-1])/2。
相關問題
- 1. 查找連續的最大連續位數
- 2. 查找連續
- 3. 查找1或0的連續位串
- 4. 查找數組中的連續範圍
- 5. 查找數組中的連續字符
- 6. 在Java中查找連續數字
- 7. 檢查連續13個位數的Java
- 8. 查找連續的條目
- 9. 查找連續的負值
- 10. 查找連續組合
- 11. SQL查找連續季度
- 12. 查找連續數字序列
- 13. 查找陣列中的連續匹配位置
- 14. 在MySQL中查找連續雙元音
- 15. 連續計數職位oracle
- 16. 查找數組中匹配的連續整數
- 17. 在數組中查找連續的重複整數
- 18. 查找數組中的3個連續數字的總和
- 19. 查找數組中的非連續數字對
- 20. 如何查找數組中最長的連續數字鏈
- 21. 查找數組中最大數量的連續值(JS)
- 22. 找到連續的數字
- 23. VBA:尋找連續數
- 24. 在數組中連續位合併
- 25. 找到最大數量的連續1位數(Java)
- 26. 使用awk查找數據中的不連續性
- 27. 在熊貓數據框中查找連續段
- 28. 在列表中查找項目的連續數量?
- 29. 查找1D數組中連續標誌值的索引
- 30. 使用linq查找數組中的連續元素
看看我的答案爲: http://stackoverflow.com/questions/19409820/running-median-of-constant-size-array/19410766#19410766 它可以幫助你。 – Stefan