【LeetCode刷题笔记-68 232:用栈实现队列】

题目:
【LeetCode刷题笔记-68 232:用栈实现队列】_第1张图片
今天这题更像是在考数据结构。只要想通一个栈作为输入栈一个栈作为输出栈就很简单。题解写的比我的代码精炼,我自己做的时候还反复倒腾这两个栈,看了题解发现根本没必要。

节省时间,这里就直接贴出代码了。最近在准备米哈游的实习面试,不知道能不能成功。

class MyQueue {
private:
    stack<int> inStack, outStack;

    void in2out() {//这个函数是让输入栈的元素导入输出栈
        while (!inStack.empty()) {
            outStack.push(inStack.top());
            inStack.pop();
        }
    }

public:
    MyQueue() {}

    void push(int x) {
        inStack.push(x);
    }

    int pop() {
        if (outStack.empty()) {
            in2out();
        }
        int x = outStack.top();
        outStack.pop();
        return x;
    }

    int peek() {
        if (outStack.empty()) {
            in2out();
        }
        return outStack.top();
    }

    bool empty() {
        return inStack.empty() && outStack.empty();
    }
};

你可能感兴趣的:(算法,栈,c++,leetcode)