用栈实现队列
正如标题所述,你需要使用两个栈来实现队列的一些操作。
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。
您在真实的面试中是否遇到过这个题?
Yes
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
- 不管存取都用stack1,stack2只是用来做辅助使用
public class Queue { private Stack<Integer> stack1; private Stack<Integer> stack2; public Queue() { // do initialization if necessary stack1 = new Stack<>(); stack2 = new Stack<>(); } public void push(int element) { // write your code here stack1.push(element); } public int pop() { // write your code here while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } int res = stack2.pop(); while(!stack2.isEmpty()){ stack1.push(stack2.pop()); } return res; } public int top() { // write your code here while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } int res = stack2.peek(); while(!stack2.isEmpty()){ stack1.push(stack2.pop()); } return res; } }