双端队列,其中所有推入/弹出前/后和get_min均为O1操作

问题描述

我只是想知道,是否有可能实现O(1)复杂度为get_min(),push_back(),push_front(),pop_back(),pop_front()的结构(列表/双端队列)((const / amortized没关系) ) }操作?

绝对有可能实现满足这些条件的stack甚至queue(它们push()pop()仅在一端可用)。但是我无法将这种逻辑重新用于出队情况。

还可以创建对推/弹出操作具有O(logn)复杂性,对于O(1)具有get_min复杂性的结构(仅使用简单列表和min_heap,其中删除任意O(logn)的元素可用)。

但对于所有操作,仍要摊销O(1)对我来说似乎是不可能的。如果是这种情况,那么有关n的确切操作数(或列表中元素的最大可能数目)的信息是否可以帮助(简单的情况)?我们可以以某种方式使用O(n)(或更多)这样的额外内存或东西吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)