文章目录 题目方法一:用输入栈和输出栈模拟队列 题目 方法一:用输入栈和输出栈模拟队列 只有输出栈为空的时候才能将输入栈的元素补充到输出栈,否则输出栈不为空,如果再从输入栈往输出栈填充元素,就会弄乱队列的先进先出规则,而且当输出栈为空需要从输入栈补充元素时,必须一次性将输入栈的元素都弹出并且加到输出栈 class MyQueue {Stack<Integer> inStack;//入栈Stack<Integer> outStack;//出栈public MyQueue() {inStack = new Stack<>();outStack = new Stack<>();}//入队public void push(int x) {inStack.push(x);}//出队public int pop() {dumpstackIn(); // 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中return outStack.pop();}//队首元素public int peek() {dumpstackIn(); // 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中return outStack.peek();}//判空public boolean empty() {return inStack.isEmpty() && outStack.isEmpty();}// 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中private void dumpstackIn(){if (!outStack.isEmpty()) return; //如果输出栈 有元素 则不需要将输入栈的元素放到输出栈while (!inStack.isEmpty()){ //否则 输出栈没有元素,那么当执行pop 或peek的时候 ,就需要把输入栈的元素逆序放到输出栈供pop 或peek使用outStack.push(inStack.pop());}} }/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj = new MyQueue();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.peek();* boolean param_4 = obj.empty();*/