最小栈问题

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。


这道题之前看过漫画,竟然一次运行成功,也是神奇。

注意!!!当前最小值不入最小栈

class Solution {
public:
    stack <int> a;
    stack <int> min_stack;
    int min_num;
    
    void push(int value) {
        a.push(value);
        if (a.size()==1){
            min_stack.push(value);
            min_num=value;
        }
        else if( min()>=value){
            min_stack.push(min());
            min_num=value;
        }
    }
    void pop() {
        if(a.size()==0)
            return;
        if (min()==a.top()){
            min_num=min_stack.top();
            min_stack.pop();
        }
        a.pop();
    }
    int top() {
        return a.top();
    }
    int min() {
        return min_num;
    }
};

猜你喜欢

转载自blog.csdn.net/TYtrack/article/details/89527440
今日推荐