【LeetCode】 Implement Queue by Two Stacks用栈实现队列

来源:互联网 发布:小米机械键盘 mac 编辑:程序博客网 时间:2024/06/11 15:00

用(双)栈实现队列

正如标题所述,你需要使用两个栈来实现队列的一些操作。

队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。

pop和top方法都应该返回第一个元素的值。

样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2

挑战
仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的

标签
栈 队列

Java:

public class MyQueue {    private Stack<Integer> stack1;    private Stack<Integer> stack2;    public MyQueue() {        // do initialization if necessary        stack1 = new Stack<Integer>();        stack2 = new Stack<Integer>();    }    private void stack2ToStack1(){        while(! stack2.isEmpty()){            stack1.push(stack2.pop());        }    }    public void push(int element) {        // write your code here        stack2.push(element);    }    public int pop() {        // write your code here        if(stack1.empty() == true){            this.stack2ToStack1();        }        return stack1.pop();    }    public int top() {        // write your code here        if(stack1.empty() == true){            this.stack2ToStack1();        }        return stack1.peek();    }}
原创粉丝点击