Description:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
Notes:
- 时间限制:1秒
- 空间限制:32768K
解题思路:对于栈来说是先进后出的,而队列则是先进先出(对头出,对尾进);因此,对于队列的push操作,我们直接将元素存储在第一个栈的顶部;而对于pop操作,我们需要利用两个栈来实现;首先,将第一个栈的所有元素依次存入第二个栈,此时,第二个栈的栈顶元素就是所需要出队的元素,将此元素出栈后,再将第二个栈的所有元素依次存入第一个栈;因此,我们的push操作时间复杂度为O(1),而pop操作的时间复杂度为O(n);
Java
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
int node = stack2.pop();
while (!stack2.isEmpty()) {
stack1.push(stack2.pop());
}
return node;
}
}