leetcode 232. Implement Queue using Stacks

经典题目,用两个栈实现队列

两个栈s[0]和s[1],一个用来入列,一个用来出列。

当s[1]为空时,执行pop()时就将s[0]的值push进s[1],再将s[1]的栈顶pop()

class Queue {
private:
    stack<int> s[2];
public:
    // Push element x to the back of queue.
    void push(int x) {
        s[0].push(x);
    }

    // Removes the element from in front of queue.
    void pop(void) {
        if (s[1].empty())
        {
            while (!s[0].empty())
            {
                s[1].push(s[0].top());
                s[0].pop();
            }
        }
        s[1].pop();
    }

    // Get the front element.
    int peek(void) {
        if (s[1].empty())
        {
            while (!s[0].empty())
            {
                s[1].push(s[0].top());
                s[0].pop();
            }
        }
        return s[1].top();
    }

    // Return whether the queue is empty.
    bool empty(void) {
        return (s[0].empty() && s[1].empty());
    }
};

 

你可能感兴趣的:(leetcode 232. Implement Queue using Stacks)