lintcode 带最小值操作的栈

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。

解法就是建立一个存放最小值的栈

class MinStack {
    stack num;  
    stack minnum;
public:
    MinStack() {
        // do initialization if necessary
    }

    void push(int number) {
        // write your code here
        num.push(number);
        if (minnum.size() == 0 || minnum.top() >= number) {  
            minnum.push(number);  
        }  
        else {  
            minnum.push(minnum.top());  
        } 
    }

    int pop() {
        // write your code here
        if (minnum.size() > 0 && num.size() > 0) {  
            int k = num.top();  
            num.pop();  
            minnum.pop();  
            return k;  
        }  
    }

    int min() {
        // write your code here
        return minnum.top();  
    }
};

你可能感兴趣的:(lintcode 带最小值操作的栈)