【问题标题】:Why is random access of deque O(1) time为什么随机访问双端队列 O(1) 时间
【发布时间】:2020-08-10 01:17:14
【问题描述】:

我已经阅读了STL deque accessing by index is O(1)?how does random access of an element in deque gives constant time complexity?,但我仍然不清楚为什么保证 O(1) 随机访问。

我了解 STL 中的双端队列是作为指向连续 固定 大小块的指针数组实现的。所以我理解在固定大小的块上循环是 O(1),因为它与双端队列的大小无关。但是要找到要循环的块,我们需要循环一个指针数组,我不认为这是一个 O(1) 操作,因为指针数组与双端队列的大小成正比?

例如,如果我们有一个n 大小的双端队列,并且固定的块大小是m,我们的指针数组将是大小上限(n/m),即 O(n)?我是不是误会了什么?

【问题讨论】:

    标签: c++ deque random-access


    【解决方案1】:

    您没有循环遍历指针的“数组”。查找指针是一个常量时间操作,因为您可以通过将常量添加到指向指针数组中第一个索引的指针来查找块。

    例如,使用您的符号,如果您有一个 n 大小的 dequem 大小的块,要找到 j-th 元素,您需要找到指向如您所说,包含j-th 元素的块。但这不涉及循环指针“数组”。在这种情况下,需要添加的常量是j/m

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 2011-01-18
      • 2017-01-24
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      相关资源
      最近更新 更多