std::deque
内部使用了分段数组,那么在deque
前面插入时如何保持O(1)的时间复杂度呢?
分段数组将大数组分解为较小的数组,但在分段数组的前面插入也可能是一项耗时的任务。我不确定
std::deque
如何保持 O(1) 时间。还是需要分段大小的时间?
按算法将元素添加到双端队列的前面是
O(1)
,如果您使用分段数组,请遵循伪push_front
过程:
O(constant) = O(1)
时间(移动或复制 push_front
的参数)。如果前段没有剩余空间,请继续步骤 2。O(constant) = O(1)
时间。继续步骤 3。O(1)
一次,只是简单的链表链接操作。继续步骤 4。O(1)
。因此,这一切加起来就是
O(1)