LeetCode: Min Stack

来源:互联网 发布:阿里云 ecs 是iaas 编辑:程序博客网 时间:2024/05/23 12:04

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.

  • getMin() -- Retrieve the minimum element in the stack
class MinStack {public:    void push(int x) {        m_stack.push(x);        if(min_stack.empty())            min_stack.push(x);        else        {            int min = min_stack.top();            if(x <= min)                min_stack.push(x);        }    }    void pop() {        if(m_stack.top() == min_stack.top())            min_stack.pop();        m_stack.pop();    }    int top() {        return m_stack.top();    }    int getMin() {        return min_stack.top();    }private:    stack<int> m_stack;    stack<int> min_stack;};

Round2:

class MinStack {public:    void push(int x) {m_stack.push(x);if((min.size() > 0 && x <= min.top()) || min.size() == 0)min.push(x);    }    void pop() {if(m_stack.top() == min.top())min.pop();m_stack.pop();    }    int top() {return m_stack.top();    }    int getMin() {return min.top();    }private:stack<int> m_stack;stack<int> min;};


Round 3:

class MinStack {public:    void push(int x) {        m_stack.push(x);        if(m_minStack.empty() || m_minStack.top() >= x)            m_minStack.push(x);    }    void pop() {        if(m_minStack.top() == m_stack.top())            m_minStack.pop();        m_stack.pop();    }    int top() {        return m_stack.top();    }    int getMin() {        return m_minStack.top();    }private:    stack<int> m_stack;    stack<int> m_minStack;};


0 0
原创粉丝点击