问题:
假设有这样一个拥有3个操作的队列:
1.EnQueue(v)看,将v加入队列中
2.DeQueue:使队列中的队首元素删除并返回此元素
3.MaxElement:返回队列中的最大元素
设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能的降低。
分析与解法:
先实现一个带有max函数的栈,然后用两个栈实现一个队列
import java.util.LinkedList;
public class Test_3_7 {
/**
* @param args
*/
public static void main(String[] args) {
Queue queue = new Queue();
queue.EnQueue(4);
System.out.println(queue.MaxElement());
queue.EnQueue(1);
System.out.println(queue.MaxElement());
queue.EnQueue(5);
System.out.println(queue.MaxElement());
queue.EnQueue(3);
System.out.println(queue.MaxElement());
queue.DeQueue();
System.out.println(queue.MaxElement());
queue.DeQueue();
System.out.println(queue.MaxElement());
queue.DeQueue();
System.out.println(queue.MaxElement());
}
}
//先实现一个具有查找最大值功能的栈
class Stack{
LinkedList<Integer>