【发布时间】:2014-11-29 23:40:41
【问题描述】:
Here 它对时间复杂度的描述如下:
与擦除(破坏)的元素数量成线性关系。另外,取决于特定的库实现,在位置和双端队列的一端之间的元素数量上最多有一个额外的线性时间。
从第一句话我明白,如果你想擦除双端队列中的任何数字,最坏情况的复杂度将是 O(1)。
现在第二句话让我感到困惑。取决于特定的库实现是什么意思?我正在使用 STL 库,即 GCC 编译器附带的同一个库。在我的案例中,如何了解此函数的正确时间复杂度?
我需要它是 O(1),因为我正在运行 O(n) 擦除调用,如果 std::deque::erase 是 O(n),我的算法将具有二次复杂度,这是我不想要的。
【问题讨论】:
-
“双端队列中的任何数字”是什么意思?!
-
“STL 库”a) 不是一个东西,b) 不是一个实现。
-
对不起,我的意思是双端队列中的任何元素,在我的例子中它只是一个整数。