使用最大API进行双端队列?

瓦伦丁

与实施队列max()API使得push()pop()max()在(摊销)O(1)是所有的工作已知解决的问题是否存在使用max()O(n)更快的相同API实现双头队列的解决方案可以证明这是不可能的吗?

报春花

这是100%,可能有一个dequeO(1)最大的API。

Adeque可以从两个堆栈中实现尽管有一些其他的业务逻辑可以保持deque平衡,但是这个想法非常简单。想象一下,两个面向相反方向的堆栈连接在一起。从此结构中,您可以弹出并附加到两侧。

可以创建一个具有恒定时间get_max()的堆栈get_min()每次推入堆栈时,都会推入两件事- (value, current_max)您可以current_max通过将current_maxin上一个元素与current元素进行比较来计算in in time value的结果get_max()将始终是current_max堆栈顶部的。

如果您deque从具有get_max()api的两个堆栈中实现a ,以获取最大双端队列,则只需调用get_max()两个堆栈并返回更大的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章