【问题标题】:Finding minimum value in a stack with O(1) time complexity [duplicate]在具有 O(1) 时间复杂度的堆栈中找到最小值
【发布时间】:2013-12-08 08:18:35
【问题描述】:

如何在 O(1) 复杂度的堆栈中找到最小值。要找到堆栈的最小值,我找到了两种方法: 1) min = 栈顶值 遍历栈并更新最小值,得到栈的最小值。 这需要 O(N) 复杂度,其中 N 是堆栈中的元素数

2) 将堆栈元素放入 minheap 将提取的根值将是堆栈中的最小值 这需要 O(N log(N))

但是我如何实现 O(1) 算法,一种独立于输入大小的算法。

这里假设堆栈已经加载了元素

【问题讨论】:

    标签: c algorithm


    【解决方案1】:

    你不能。找到任意堆栈的最小元素的 O(1) 算法也可用于找到双向链表的最小元素,然后您可以使用它来创建 O(n) 排序算法。

    现在,可以实现一个堆栈来跟踪其最小元素的构建。然后这样的堆栈可以返回其存储的最小值,并且如果您碰巧弹出最小元素,则只需进行 O(n) 搜索。但这并不是一回事。

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 2021-06-21
      • 2020-08-18
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2020-06-08
      • 2019-03-31
      相关资源
      最近更新 更多