155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。

  solution : 

    用一个辅助栈,存储当前最小值为栈顶,添加一个元素,如果小于栈顶,进栈,否则不管,删除一个元素如果等于栈顶,则出栈

    

class MinStack {
    stack<int> minSt;
    stack<int> st;
public:
    MinStack() {
        minSt.push(INT_MAX);
    }
    void push(int val) {
        st.push(val);
        if (val <= minSt.top())
            minSt.push(val);
    }
    
    void pop() {
        int tmp = st.top();
        st.pop();
        if (minSt.top() == tmp)
            minSt.pop();
    }
    
    int top() {
        return st.top();
    }
    
    int getMin() {
        return minSt.top();
    }
};

 

posted @ 2022-12-29 15:21  tuffy_tc  阅读(30)  评论(0)    收藏  举报