【问题标题】:space complexity for queue with fixed size固定大小队列的空间复杂度
【发布时间】:2017-04-06 21:39:28
【问题描述】:

目前,我正在研究空间和时间复杂度分析。我有个问题。 如果我们创建一个队列,我们​​知道我们最多只需要这个队列来维护 5000 个元素。 这个队列的空间复杂度应该是O(1)?

【问题讨论】:

  • 空间和时间复杂度由实现决定,因此您的问题一般无法回答,但任何存储 N 个元素的结构的空间复杂度都可能小于 O(N)。它可能更大。因此,无论如何它不可能是 O(1)。

标签: java algorithm queue


【解决方案1】:

在您的问题的限制范围内,无论您执行多少操作,您的队列都不会超过 5000 个元素,因此它的大小受一个常数 (5000) 的限制。这就是 O(1) 大小复杂度的定义。

【讨论】:

    【解决方案2】:

    这取决于,如果您以某种方式占用队列所需的所有空间来容纳所有 5000 个元素,或者只是从一个已经有 5000 个元素的元素开始,那么是O(1) 空间复合体。在这一点上,它类似于array

    但是,如果您从零节点开始并不断向结构中添加节点,那么它将是 O(n) 复杂的,因为从这个意义上说队列是动态的,无论您将拥有最多 5000 个元素。

    顺便说一句,Here 是一个很好的复杂性备忘单。

    【讨论】:

    • 感谢您的回复。如果我的队列大小> 5000,那么我将从队列中轮询顶部元素并将新元素添加到队列中。该操作会影响我的队列的空间复杂度吗?
    • 不,一个元素不会对空间复杂度分析产生影响。
    【解决方案3】:

    我还没有真正像研究时间复杂度那样广泛地研究空间复杂度。我的研究来自https://www.quora.com/How-do-we-calculate-space-complexity

    当我们添加到大小

    如果我的队列大小> 5000,那么我将从队列中轮询顶部元素并将新元素添加到队列中。该操作会影响我的队列的空间复杂度吗?

    如果您的队列达到最大容量 (5000),并且您要在添加更多元素时删除队列的第一个元素,那么整体大小保持不变。一旦队列达到最大容量,添加额外元素现在是 O(1)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2011-05-22
      • 2016-07-19
      • 1970-01-01
      • 2015-04-04
      • 2018-03-13
      • 1970-01-01
      相关资源
      最近更新 更多