题解 | 包含min函数的栈

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49?tpId=265&tqId=39232&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D265&difficulty=undefined&judgeStatus=undefined&tags=&title=

class Solution {
private:
    vector<int> MyStack;
    int topPtr;

public:
    Solution():topPtr(-1){}

    void push(int value) {
        topPtr++;
        MyStack.push_back(value);
    }
    void pop() {
        if(topPtr!=-1){
            MyStack.pop_back();
            topPtr--;
            return;
        }else{
            return;
        }
    }
    int top(){
        if(topPtr!=-1){
            return MyStack[topPtr];
        }else{
            //int可能最小值
            return INT_MIN;
        }
    }
    //https://blog.nowcoder.net/n/7c2a97d1e266435381978d3b8410528f
    //官方题解中为把时间复杂度控制在O(1),必须保证每次push以及pop后都能得到min,用另一stack存储每个阶段的最小值
    int min(){
        // 使用 std::min_element 找到最小元素的迭代器
        if(topPtr==-1){
            return INT_MIN;
        }
        auto min_it = min_element(MyStack.begin(), MyStack.end());
        return *min_it;
    }
};

全部评论

相关推荐

08-28 20:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务