【发布时间】:2020-12-25 04:48:52
【问题描述】:
我只是想知道,对于get_min(), push_back(), push_front(), pop_back(), pop_front() 操作,是否有可能实现具有O(1) 复杂度(const/amortized 无关紧要) 的结构(列表/双端队列)?
绝对有可能实现stack 甚至queue(对他们来说push() 和pop() 只能用于一端)满足这些条件。但我无法将此逻辑重用于出队案例。
还可以创建具有O(logn) 复杂性的结构,用于推送/弹出和O(1) 用于get_min(只需使用简单列表和min_heap,其中可以删除O(logn) 的任意元素) .
但对我来说,所有操作仍然摊销O(1) 似乎是不可能的。如果是这种情况,关于操作的确切数量(或列表中可能的最大元素数量)n 的信息是否有帮助(更简单的情况)?我们能以某种方式使用O(n)(甚至更多)额外的内存或像这样的东西吗?
【问题讨论】:
标签: c++ algorithm data-structures min priority-queue