Java 实现队列,使FindMin和FindMax为0(1)
这是一个很常见的问题,但我还没有找到一个明确的答案。 我所做的是使用2个堆栈实现队列,在节点和数据中,我还维护最小值和最大值。实现是用Java完成的 现在的问题是,如果Java 实现队列,使FindMin和FindMax为0(1),java,algorithm,data-structures,queue,Java,Algorithm,Data Structures,Queue,这是一个很常见的问题,但我还没有找到一个明确的答案。 我所做的是使用2个堆栈实现队列,在节点和数据中,我还维护最小值和最大值。实现是用Java完成的 现在的问题是,如果第一个元素是Max/Min并且我将其出列,那么其余的节点包含的Min/Max值与出列的值相同 示例:107892 节点-[数据,最大值,最小值] [10,10,10],[7,10,7],[8,10,7],[9,10,7],[2,10,2] 现在,如果我把它排出来,那么队列是:[7,10,7],[8,10,7],[9,10,7],[
第一个元素是Max/Min
并且我将其出列,那么其余的节点包含的Min/Max值与出列的值相同
示例:107892
节点-[数据,最大值,最小值]
[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)
我的算法基本上适用于堆栈,我使用的是队列。那么,我如何修改我的算法,使其给出正确的结果呢?请查看heapsort中的内容。我想这就是你需要的…是你需要的吗
双端队列可以通过两种方式进行编码:
- 拥有队列的两个副本,并为每个元素维护到相应元素的链接
- 使用数据结构调用