用两个栈来实现一个队列, 完成队列的 Push 和 Pop 操作. 队列中的元素为 int 类型.
思路: 元素先进 stack1, 再从 stack1 到 stack2, 如果 stack2 中有元素则直接弹出, 没有则从 stack1 中获取元素. 当 stack2 中有元素的时候, stack1 不能向 stack2 添加元素, 否则会造成乱序.
进入元素: 1 2 3 4 5
先进入 stack1 得
- stack1
- 5
- 4
- 3
- 2
- 1
再从 stack1 到 stack2 得
- stack2
- 1
- 2
- 3
- 4
- 5
- 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 不为空, 则直接弹出
- return stack2.pop();
- }else{
- while(!stack1.isEmpty()){
- stack2.push(stack1.pop());
- }
- }
- return stack2.pop();
- }
- }
来源: http://www.bubuko.com/infodetail-3392807.html