美文网首页
LeetCode 面试题 03.02. 栈的最小值

LeetCode 面试题 03.02. 栈的最小值

作者: 吴敬悦 | 来源:发表于2021-02-13 22:38 被阅读0次

    请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin();   --> 返回 -3.
    minStack.pop();
    minStack.top();      --> 返回 0.
    minStack.getMin();   --> 返回 -2.
    

    由于要求的是都是 O(1) 的时间复杂度,目前还没想到,我目前想到的是:

    1. 设置一个变量专门保存最小值,但是会存在一个问题,那就是如果 pop 操作的时候刚好移除的是最小值,那么就得需要从栈中重新寻找最小值,这个过程的时间复杂度为: O(n)
    2. 如果我选择排好序,那么就会遇到第二个问题,那就是 push 的时候时间复杂度就为 O(n)

    现在还不想看别人的答案,所以先保留在这里,等我想到了再编写出来。


    来源:力扣(LeetCode)

    相关文章

      网友评论

          本文标题:LeetCode 面试题 03.02. 栈的最小值

          本文链接:https://www.haomeiwen.com/subject/pnyexltx.html