思路:
- push操作:只需将元素放入S1即可
- pop操作:将S1的元素挨个出栈,放入S2中,将S2 的栈顶元素弹出,就是队列的出队操作。注意:如果S2不为空,直接弹出就好了
public class leetcode_07 {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
//如果S2中当前有元素,直接弹出
if(stack2.isEmpty()) {
//将S1的元素全部放入S2
while (!stack1.isEmpty()) {
//将S1的栈顶入栈到S2
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
public static void main(String[] args) {
leetcode_07 ls = new leetcode_07();
ls.push(1);
ls.push(2);
ls.push(3);
System.out.println(ls.pop());
System.out.println(ls.pop());
ls.push(4);
System.out.println(ls.pop());
ls.push(5);
System.out.println(ls.pop());
System.out.println(ls.pop());
/**
* 1
* 2
* 3
* 4
* 5
*/
}
}