Skip to content

Latest commit

 

History

History
75 lines (67 loc) · 1.47 KB

File metadata and controls

75 lines (67 loc) · 1.47 KB

题目描述:
image
解题过程:
方法一是使用辅助空间存储最小值,同步压入和弹出;
方法二是使用与最小值的差值来进行压入和弹出
代码:(辅助栈→差值)

class MinStack {
private:
    stack<int> s;
    stack<int> min_s;
public:
    MinStack() {
        min_s.push(INT_MAX);
    }
    
    void push(int val) {
        s.push(val);
        min_s.push(min(min_s.top(),val));
    }
    
    void pop() {
        s.pop(); min_s.pop();
    }
    
    int top() {
        return s.top();
    }
    
    int getMin() {
        return min_s.top();
    }
};
class MinStack {
private:
    long MIN;
    stack<long long> stk;
public:
    MinStack() {}
    
    void push(int val) {
        if (stk.empty()) {
            stk.push(0);
            MIN = (long)val;
        } else {
            long long diff = (long long)val - MIN;
            stk.push(diff);
            MIN = min(MIN,(long)val);
        }
    }
    
    void pop() {
        long long diff = stk.top();
        if (diff < 0) {
            MIN -= (long)diff;
        }
        stk.pop();
    }
    
    int top() {
        long long diff = stk.top();
        if (diff >= 0) {
            return (int) (MIN + diff);
        } else {
            return MIN;
        }
    }
    
    int getMin() {
        return MIN;
    }
};