假设我有一个由三个元素组成的数据结构,{1,2,3}
什么样的数据结构和时间复杂度会给我最好的结果,如果我只想执行以下操作?
-将最后一个元素移到数据结构的“前端”
-移除(现在)最后一个元素
我找到了这个页面:http://essays.hexapodia.net/datastructures/它说一个双链接列表对于某些操作有o(1)?
但是,每次我都需要保持元素的顺序,这样我就可以进行移位。如果我有{1,2,3}我就想移动,得到3,1,2,然后移除,留下3,1,然后移除,留下1
如果我使用双链表,我的复杂度是O(1)吗???
最佳答案
是的,删除和添加两端的元素在保持指针指向头部和尾部的双链接列表中是o(1)。由于这两种操作都可以实现移位,所以移位也是O(1)。
在循环链接列表中,您甚至可以通过执行
head = tail
if (tail != null) tail = tail.prev
关于algorithm - 移位和移除头部元件的最佳bigO时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7052561/