这是一个非常常见的问题,但我在任何地方都没有找到明确的答案。我正在做的是使用 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)。
我的算法基本上适用于堆栈,我正在使用队列。那么我怎样才能修改我的算法,以便它给出正确的结果呢?