思路:
栈的特点是先入后出,队列的特点是先进先出。
所以一个栈干不了队列的活,可以借助两个栈,一个栈负责队列的入队,一个栈负责队列的出栈操作。
队列的入队,用 栈 A 的 push()操作就可以了。
队列的出队,通过把栈A 的元素全部压入栈 B 中,再进行B 栈的 出栈操作,即入栈的时候,B栈要为空。其他时候,也就是B栈 弹出元素的时候,A 栈要为空。
这里的空判断用 size() 方法判断。
代码:
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.size()<=0){
while(stack1.size()!=0){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
网友评论