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