leetcode 232. Implement Queue using Stacks

經典題目,用兩個棧實現隊列spa

兩個棧s[0]和s[1],一個用來入列,一個用來出列。code

當s[1]爲空時,執行pop()時就將s[0]的值push進s[1],再將s[1]的棧頂pop()blog

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());
    }
};
相關文章
相關標籤/搜索