剑指offer28 JZ9 用两个栈实现队列
用两个栈实现队列
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=23281&ru=/exam/oj/ta&qru=/ta/coding-interviews/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D13
思路
借助栈的先进后出规则模拟实现队列的先进先出
- 1、当插入时,直接插入 stack1
- 2、当弹出时,当 stack2 不为空,弹出 stack2 栈顶元素,如果 stack2 为空,将 stack1 中的全部数逐个出栈入栈 stack2,再弹出 stack2 栈顶元素
代码实现
import java.util.*;
public class Solution {
//存放入栈元素
Stack<Integer> stack1 = new Stack<Integer>();
//存放出栈元素
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
//插入时直接插入到 stack1
stack1.push(node);
}
public int pop() {
//stack2为空将stack1元素全部插入到stack2
if(stack2.isEmpty()){
while(stack1.size()>0){
stack2.push(stack1.pop());
}
}
//不为空时删除直接返回stack2的顶部元素
return stack2.pop();
}
}