0

这是一个非常常见的问题,但我在任何地方都没有找到明确的答案。我正在做的是使用 2 stacks 实现 Queue ,并且在节点中连同 data ,我也维护 min 和 max 值。实现是用Java完成的。

现在,问题是,如果first element is Max / Min我将它出队,那么其余节点包含最小/最大值作为出队的那个。

例子 :10 7 8 9 2

节点 - [数据,最大值,最小值]

[10,10,10] , [7,10,7] ,[8,10,7] , [9,10,7] , [2,10,2]

现在,如果我将其出列,则队列为:[7,10,7] ,[8,10,7] , [9,10,7] , [2,10,2]

并且最小值和最大值是错误的 (10,7) ,它应该是 (9,2)。

我的算法基本上适用于堆栈,我正在使用队列。那么我怎样才能修改我的算法,以便它给出正确的结果呢?

4

2 回答 2

0

查看 heapsort 中的heapify()。我想这就是你需要的...

于 2012-08-21T19:52:23.453 回答
0

这是需要的吗?

双端队列可以用两种方式编码:

于 2012-08-21T22:17:52.977 回答