OJ练习31——T155 Min Stack

设计栈,要求支持pop,push,top,以及返回栈中最小值的功能。

【思路】

首见题型。要用两个stack,其中一个保留最小值。

每次选择比minstack.top小的值push进去,这样就能保持top始终是最小值。

【other code】

class MinStack {
private:
    stack<int> ostack;
    stack<int> minstack;
public:
    void push(int x) {
        ostack.push(x);
        if(minstack.empty()|| ((!minstack.empty()) && x <= minstack.top()))
            minstack.push(x);
    }

    void pop() {
        if(!ostack.empty()){
            if(minstack.top()==ostack.top())
                minstack.pop();
            ostack.pop();
        }
    }

    int top() {
        if(!ostack.empty()){
            return ostack.top();
        }
    }

    int getMin() {
        if(!minstack.empty()){
            return minstack.top();
        }
    }
};

【后记】

记住这个思路。

原文地址:https://www.cnblogs.com/ketchups-notes/p/4459276.html