C++/代码:

用两个栈实现队列

http://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6

C++/代码:

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }
    void copy (stack<int> &a,stack<int> &b) { //引用自定义函数
        while (a.size()) { //弹出元素
            b.push(a.top()); //a顶部的元素插入b的尾部
            a.pop();
        }
    }
    int pop() {
        copy(stack1,stack2);
        int res = stack2.top();
        stack2.pop();
        copy(stack2,stack1);
        return res;
    }
private:
    stack<int> stack1;
    stack<int> stack2;
};
全部评论
连续pop的时候,会反复执行不必要的copy,pop的时候留住stack2中的元素,保持可以持续pop的状态,push时再copy(Stack2, stack1)
点赞 回复 分享
发布于 2021-09-15 15:35

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务