두 스택을 사용하여 큐를 구현하여 큐의 푸시 및 팝 작업을 완료합니다. 큐의 요소는 int 유형입니다.
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())作用: 在stack1没有完成弹出所有元素前,不进行入栈操作
* ["PSH1","PSH2","PSH3","POP","POP","PSH4","POP","PSH5","POP","POP"]
* 前3次 push方法 stack1 {1,2,3} 入栈的存储顺序是{3,2,1}
* 第4次 pop方法 stack1 出栈的顺序是{3,2,1},然后将{3,2,1}进行压栈,押入stack2中,stack2中存储顺序是{1,2,3},弹出1
* 第5次 pop方法 stack1为空,不走括号里面逻辑,直接弹出2 stack2里还剩下{3}
* 第6次 push方法 stack1压入{4}
* 第7次 pop方法 stack1不为空,进入括号逻辑,压入stack1 {4,3} 弹出4 问题出现,预期是队列的出栈顺序 应该是 1 2 3 4 此时出栈的顺序是1 2 4,执行到这里就已经错误逻辑了
*
*/
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
int val = stack1.pop();
stack2.push(val);
}
}
return stack2.pop();
}
}