NewCoder:用两个栈实现队列

    xiaoxiao2023-11-27  168

    题目来源

    https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=11158&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

    解题思路

    用stack1作为输入栈用stack2作为输出栈。 如果stack2为空,则将stack1栈的数据全部给stack2。stack1的栈底到了stack2栈顶. 如果stack2不为空,则直接pop()栈顶stack2的栈顶元素。

    实现代码

    import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { //s1为优先输入栈 stack1.push(node); } public int pop() { //s2为优先输出栈 if(stack2.empty()){ //1.s2为空 while(!stack1.empty()) { stack2.push(stack1.pop()); //将s2数据全部搬移到s2,s1的栈底到了s2栈顶 } int temp = stack2.pop(); //取得栈顶元素然后返回 return temp; } else { //2.s2不为空,直接弹出s2元素 int temp = stack2.pop(); return temp; } } }
    最新回复(0)