相关疑难解决方法(0)

如何使用两个堆栈实现队列?

假设我们有两个堆栈而没有其他临时变量.

是否可以仅使用两个堆栈"构造"队列数据结构?

algorithm queue stack data-structures

380
推荐指数
6
解决办法
29万
查看次数

实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作

我遇到了这个问题: 实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作.

我最初想过使用一个最小堆数据结构,它对于get_min()具有O(1)复杂度.但是push_rear()和pop_front()将是O(log(n)).

有谁知道实现这样一个有O(1)push(),pop()和min()的队列的最佳方法是什么?

我搜索了这个,并想指出这个算法极客线程.但似乎没有一个解决方案遵循所有3种方法的恒定时间规则:push(),pop()和min().

感谢所有的建议.

algorithm queue big-o data-structures

74
推荐指数
3
解决办法
2万
查看次数

使用find-min/find-max进行堆栈比O(n)更有效?

我感兴趣的是创建一个类似于堆栈的Java数据结构,它尽可能高效地支持以下操作:

  • 推送,在堆栈顶部添加一个新元素,
  • Pop,删除堆栈的顶部元素,
  • Find-Max,返回(但不删除)堆栈的最大元素,和
  • Find-Min,返回(但不删除)堆栈的最小元素,和

这个数据结构最快的实现是什么?我怎么能用Java编写它?

java algorithm big-o stack data-structures

51
推荐指数
2
解决办法
3万
查看次数

标签 统计

algorithm ×3

data-structures ×3

big-o ×2

queue ×2

stack ×2

java ×1