LeetCode 232 用栈实现队列

题目链接:LeetCode 232 用栈实现队列

题目大意:

题解:
将一个栈当作输入栈,用于压入\(push\)传入的数据;另一个栈当作输出栈,用于\(pop\)\(peek\)操作。
每次\(pop\)\(peek\)时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。

class MyQueue {
private:
    stack<int> inStack, outStack;
    void inToOut() {
        while (!inStack.empty()) {
            outStack.push(inStack.top());
            inStack.pop();
        }
    }

public:
    MyQueue() {}
    
    void push(int x) {
        inStack.push(x);
    }
    
    int pop() {
        if (outStack.empty()) {
            inToOut();
        }
        int x = outStack.top();
        outStack.pop();
        return x;
    }
    
    int peek() {
        if (outStack.empty()) {
            inToOut();
        }
        return outStack.top();
    }
    
    bool empty() {
        return inStack.empty() && outStack.empty();
    }
};
posted @ 2022-02-03 22:00  ZZHHOOUU  阅读(22)  评论(0编辑  收藏  举报