算法记录Day 10 | 栈与队列part01

59 阅读1分钟

算法记录Day 10 | 栈与队列part01

LeetCode 232-用栈实现队列

题目链接:leetcode.cn/problems/im…

题解
class MyQueue {
   public:
    stack<int> inStack;
    stack<int> outStack;
    MyQueue() {}

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

    void in2out() {
        while (!inStack.empty()) {
            outStack.push(inStack.top());
            inStack.pop();
        }
    }

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

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

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

LeetCode 225-用队列实现栈

题目链接:leetcode.cn/problems/im…

题解
class MyStack {
   public:
    queue<int> queue1;
    queue<int> queue2;
    MyStack() {}

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

    int pop() {
        int size = queue1.size();
        int val;
        size--;
        while (size--) {
            queue2.push(queue1.front());
            queue1.pop();
        }
        val = queue1.front();
        queue1.pop();
        queue1 = queue2;
        while (!queue2.empty()) {
            queue2.pop();
        }
        return val;
    }

    int top() { return queue1.back(); }

    bool empty() { return queue1.empty(); }
};