获取栈中最小值函数,时间复杂度为O(1)

来源:互联网 发布:网络平台营业执照 编辑:程序博客网 时间:2024/06/02 21:32
class Solution {//方案一 节省空间但是费时间    stack<int> stackData,stackMin;public:    void push(int value) {        if(stackData.empty())        {            stackData.push(value);            stackMin.push(value);        }else{            stackData.push(value);            if(value<=stackMin.top())                stackMin.push(value);        }    }    void pop() {        if(stackData.top()==stackMin.top())            stackMin.pop();        stackData.pop();    }    int top() {        return stackData.top();    }    int min() {        return stackMin.top();    }};



class Solution {//方案二费空间,省时间    stack<int> stackData,stackMin;public:    void push(int value) {        if(stackData.empty())        {            stackData.push(value);            stackMin.push(value);        }else{            stackData.push(value);            if(value<stackMin.top())                stackMin.push(value);            else                stackMin.push(stackMin.top());        }    }    void pop() {        stackMin.pop();        stackData.pop();    }    int top() {        return stackData.top();    }    int min() {        return stackMin.top();    }};


0 0