【问题标题】:What is the algorithmic complexity of converting a collections.deque to python list?将 collections.deque 转换为 python 列表的算法复杂度是多少?
【发布时间】:2018-09-18 20:49:06
【问题描述】:

我正在尝试确定将 collections.deque 对象转换为 python 列表对象的复杂性是 O(n)。我想它必须获取每个元素并将其转换为列表,但我似乎无法找到双端队列背后的实现代码。那么 Python 是否在幕后内置了更高效的东西,可以允许 O(1) 转换为列表?

编辑:基于以下内容,我认为它不会比 O(n) 更快 “索引访问在两端是 O(1),但在中间慢到 O(n)。对于快速随机访问,请改用列表。”

如果它无法在 O(1) 时间内访问中间节点,那么它就无法在没有相同复杂度的情况下进行转换。

【问题讨论】:

标签: python time-complexity big-o


【解决方案1】:

您必须访问 每个 节点。仅凭这个事实,O(1) 时间是不可能的。

我相信双端队列遵循与conventional deques 相同的原则,因为访问第一个元素的时间是恒定的。您必须对 n 元素执行此操作,因此执行此操作的运行时间为 O(n)。

【讨论】:

    【解决方案2】:

    Here is the implementation of deque

    但是,这与确定在 python 中将双端队列转换为列表的复杂性无关。

    如果 python 没有在内部以某种方式重用数据结构,则转换为列表将需要遍历双端队列,这将是 O(n)。

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 2023-03-07
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2019-05-14
      相关资源
      最近更新 更多