与实施队列max()
API使得push()
,pop()
和max()
在(摊销)O(1)是所有的工作已知解决的问题。是否存在使用max()
O(n)更快的相同API实现双头队列的解决方案?可以证明这是不可能的吗?
这是100%,可能有一个deque
与O(1)
最大的API。
Adeque
可以从两个堆栈中实现。尽管有一些其他的业务逻辑可以保持deque
平衡,但是这个想法非常简单。想象一下,两个面向相反方向的堆栈连接在一起。从此结构中,您可以弹出并附加到两侧。
可以创建一个具有恒定时间get_max()
或的堆栈get_min()
。每次推入堆栈时,都会推入两件事- (value, current_max)
。您可以current_max
通过将current_max
in上一个元素与current元素进行比较来计算in in time value
。的结果get_max()
将始终是current_max
堆栈顶部的。
如果您deque
从具有get_max()
api的两个堆栈中实现a ,以获取最大双端队列,则只需调用get_max()
两个堆栈并返回更大的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句