12. 带最小值操作的栈

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。

你实现的栈将支持pushpopmin 操作,所有操作要求都在O(1)时间内完成。

/*
    两个栈一个维护最小值,一个维护值
*/
class MinStack {
public:
    MinStack() {
        // do intialization if necessary
    }

    /*
     * @param number: An integer
     * @return: nothing
     */
    
    void push(int number) {
        // write your code here
        if (min_num.empty() || number <= min_num.top())
            min_num.push(number);
        ans.push(number);    
    }

    /*
     * @return: An integer
     */
    int pop() {
        // write your code here
        int pos = ans.top();
        ans.pop();
        if (min_num.top() == pos)
            min_num.pop();
        return pos;
    }

    /*
     * @return: An integer
     */
    int min() {
        // write your code here
        if (!min_num.empty())
            return min_num.top();
    }
    
    stack <int> ans;
    stack <int> min_num;
};

 

posted @ 2018-03-17 21:10  勿忘初心0924  阅读(167)  评论(0编辑  收藏  举报