💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
使用两个stack,如进入队列为 1,2,3,4,5 那么其中的一个栈A内保存了 [栈底]5,4,3,2,1 ,这样出队列是顺序与入队列一直,假如此时6要入队列,如何使得栈A为 :[栈底]6,5,4,3,2,1,可以先将A [栈底]5,4,3,2,1 出栈入栈到另一个空的栈B中:[栈底]1,2,3,4,5,然后6入栈B,之后B再出栈入栈到另一个原来的栈A中,这样A[栈底]6,5,4,3,2,1 ``` public class MyQueue { private Stack<Integer> stack1 = null; private Stack<Integer> stack2 = null; public MyQueue() { stack1 = new Stack<Integer>(); stack2 = new Stack<Integer>(); } /* * @param element: An integer * @return: nothing */ public void push(int element) { Stack<Integer> empty = stack1.isEmpty()?stack1:stack2; Stack<Integer> notEmpty = empty == stack1? stack2 : stack1; while(!notEmpty.isEmpty()) {//A栈出栈入B栈 Integer cur = notEmpty.pop(); empty.push(cur); } empty.push(element); while(!empty.isEmpty()) {//B栈出栈入A栈 Integer cur = empty.pop(); notEmpty.push(cur); } } /* * @return: An integer */ public int pop() { Stack<Integer> empty = stack1.isEmpty()?stack1:stack2; Stack<Integer> notEmpty = empty == stack1? stack2 : stack1; if(empty.isEmpty() && notEmpty.isEmpty()) { return -1; } return notEmpty.pop(); } /* * @return: An integer */ public int top() { Stack<Integer> empty = stack1.isEmpty()?stack1:stack2; Stack<Integer> notEmpty = empty == stack1? stack2 : stack1; if(empty.isEmpty() && notEmpty.isEmpty()) { return -1; } return notEmpty.peek(); } } ```