编写四个O(1)时间过程,将元素插入到从数组构造的双端队列的两端插入元素。
在我的实现中,我保持了4个指针 front1,rear1,front2,rear2 。
您是否有其他任何指针较少且O(1)复杂度较高的算法?请解释一下。
答案 0 :(得分:2)
实现双端队列有两种常用方法:
O(1)
时间内插入和删除链接列表的开头/结尾很容易。arr.length-1
和index = 0
中的元素被视为相邻)。
head-1
(向后移动头部),向尾部添加元素是通过将其写入索引tail+1
来完成的。
O(1)
,并且具有比链表实现更好的常量。然而,它不是严格的最坏情况" O(1)
,因为如果元素的数量超过数组的大小,则需要重新分配新数组并将元素从旧数组移动到新数组。这需要O(n)
时间(但需要在至少O(n)
次操作之后完成),因此它是O(1)
摊销分析,但仍然可以从O(n)
落到<input type="checkbox" name="mailing" /> Would you like to join our mailing list ?
时间。