leetcode 最小栈

leetcode 最小栈

 使用两个栈来实现此功能,栈1用来存储主栈的数据,栈2用来存储更新最小值,保证栈2中的数值存有最小值,次小值,依次小值

代码如下:

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {
        void push(int x);
        void pop();
        int top();
        int getMin();
    }
    
    void push(int x) {
       s1.push(x);
        if(minTmp.empty()||x<=minTmp.top())
        {
            minTmp.push(x);
        } 
    } 
    
    void pop() {    
        if(s1.top()==minTmp.top())
        {
            minTmp.pop();
        }
        s1.pop();        
    }  
    
    int top() {
        int tmp=s1.top();
        return tmp;
    }
    
    int getMin() {      
        return minTmp.top();
    }
private:
    stack<int> s1;
    stack<int> minTmp;     //用来存储最小值
    int min;    
};

每天进步一点