题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:
push操作:
1.直接将元素压栈stack1。
pop操作:
1.从stack2中弹出元素。分两种情况
1).若stack2为空,将stack1中所有元素弹出并压入stack2。
2).若stack2不为空,直接从stack2弹出元素。
上述做法依据:本题要使用栈来实现队列的先进先出效果,而栈的性质是后进先出,所以使用两次栈的后进先出就能达到先进先出的效果。所以,所有元素都会经历先压入stack1,然后压入stack2的过程。
代码:
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() {
if(!stack2.isEmpty()) //stack2不为空的情况,直接弹出stack2中的元素
return stack2.pop();
while(!stack1.isEmpty()) //stack2为空的情况,将stack1中的所有元素弹出栈,并压入stack2
stack2.push(stack1.pop());
return stack2.pop();
}
}