2
A
回答
4
deque
实现比双向链表更聪明一点。它们是Python对象的双向链接列表块,其中左侧和右侧可能是不完整的块。
在中间访问的大O成本仍然是O(n)
,但它有一个不变除数(取决于实现,CPython 3.5 allocates blocks that can store 64 objects)。因此,如果您的deque
有1000个成员,则在中间访问仍然只涉及大约7-8个“链接列表式”遍历,而不是500个。如果deque
很小(65到128个元素,取决于空槽如何与头部和尾部块对齐),那么查找任何元素都是等价的。
相关问题
- 1. 双向搜索的时间复杂度
- 2. 时间复杂度 - 双向Dijkstra
- 3. 双向链表中节点删除的时间复杂度
- 4. python str.index时间复杂度
- 5. 访问时Lua中metatable的时间复杂度
- 6. 随机存取数组的时间复杂度
- 7. 随机分量算法的时间复杂度(Gillespie算法)
- 8. 只访问矩阵中的行的时间复杂度
- 9. Python集操作的时间复杂度?
- 10. 时间复杂度
- 11. 时间复杂度
- 12. 时间复杂度
- 13. 时间复杂度
- 14. C++排序向量时间复杂度
- 15. 时间复杂度和空间复杂度,如何计算空间复杂度
- 16. 问题的分析时间复杂度
- 17. boost :: hana :: tuple元素访问的时间复杂度是多少?
- 18. 计算函数的空间复杂度和时间复杂度
- 19. map.find()的时间复杂度
- 20. A *的时间复杂度
- 21. Math.Sqrt()的时间复杂度?
- 22. BST的时间复杂度
- 23. gsub的时间复杂度
- 24. 随机访问迭代器的复杂性
- 25. 时间这双循环的复杂性
- 26. 查找频繁出现元素的随机算法的时间复杂度?
- 27. 'if'in'时间复杂度
- 28. 时间复杂度(Java,Quicksort)
- 29. 降低时间复杂度
- 30. 算法复杂度时间
另请注意文档[“索引访问在两端都是O(1),但在中间减慢到O(n)。”](https://docs.python.org/3/library/collections.html# collections.deque.maxlen) – metatoaster