设计包含max函数的队列 问题:
假设有这样一个拥有3个操作的队列:
1.EnQueue(v)看,将v加入队列中
2.DeQueue:使队列中的队首元素删除并返回此元素
3.MaxElement:返回队列中的最大元素
设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能的降低。
分析与解法:
先实现一个带有max函数的栈,然后用两个栈实现一个队列
[java] view plaincopyprint? 01.import java.util.LinkedList; 02. 03. 04.public class Test_3_7 { 05. 06. /** 07. * @param args 08. */ 09. public static void main(String[] args) { 10. Queue queue = new Queue(); 11. queue.EnQueue(4); 12. System.out.println(queue.MaxElement()); 13. queue.EnQueue(1); 14. System.out.println(queue.MaxElement()); 15. queue.EnQueue(5); 16. System.out.println(queue.MaxElement()); 17. queue.EnQueue(3); 18. System.out.println(queue.MaxElement()); 19. queue.DeQueue(); 20. System.out.println(queue.MaxElement()); 21. queue.DeQueue(); 22. System.out.println(queue.MaxElement()); 23. queue.DeQueue(); 24. System.out.println(queue.MaxElement()); 25. 26. 27. } 28. 29. 30.} 31.//先实现一个具有查找最大值功能的栈 32.class Stack{ 33. LinkedList<Integer> datalist = new LinkedList<Integer>(); 34. LinkedList<Integer> helplist = new LinkedList<Integer>(); 35. public void push(int i){ 36. if(datalist.size()==0){ [1] [2] 下一页
|