1.题目
2.解题思路
用两个栈,入队时将栈中元素全部拿出,再全部入栈,把新入元素压入栈底
3.代码实现
class MyQueue {
Stack<Integer> queue;
Stack<Integer> stack;
/** Initialize your data structure here. */
public MyQueue() {
queue = new Stack<Integer>();
stack = new Stack<Integer>();
}
/** Push element x to the back of queue. */
public void push(int x) {
int size = queue.size();
for (int i = 0; i < size; i++)
stack.push(queue.pop());
queue.push(x);
for (int i = 0; i < size; i++)
queue.push(stack.pop());
}
/** Removes the element from in front of queue and returns that element. */
public int pop() {
return queue.pop();
}
/** Get the front element. */
public int peek() {
return queue.peek();
}
/** Returns whether the queue is empty. */
public boolean empty() {
return queue.isEmpty();
}
}
4.其他解法
最好是优化入队,繁化出队
这个使用了摊还使用两个栈,一个用来入队,一个用来出队
LeetCode摊还分析