【leetcode 设计题 C++】155. Min Stack

155. Min Stack

在这里插入图片描述

class MinStack {
    
    
public:
    /** initialize your data structure here. */
    stack<int> S;
    stack<int> minS;
    MinStack() {
    
    
    }
    
    void push(int x) {
    
    
        S.push(x);
        if(minS.empty() || x <= minS.top()) minS.push(x);
    }
    
    void pop() {
    
    
        if(S.top() == minS.top()) minS.pop();
        S.pop();
    }
    
    int top() {
    
    
        return S.top();
    }
    
    int getMin() {
    
    
        return minS.top();
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(x);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

在这里插入图片描述

class MinStack {
    
    
public:
    /** initialize your data structure here. */
    vector<int> V;
    MinStack() {
    
    
    }
    
    void push(int x) {
    
    
        V.push_back(x);
    }
    
    void pop() {
    
    
        V.pop_back();
    }
    
    int top() {
    
    
        return V[V.size() - 1];
    }
    
    int getMin() {
    
    
        int minV = INT_MAX;
        for(int ii = 0; ii < V.size(); ii++) minV = min(minV, V[ii]);
        return minV;
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(x);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

猜你喜欢

转载自blog.csdn.net/m0_37454852/article/details/114375328