美文网首页
栈 问题

栈 问题

作者: RayRaymond | 来源:发表于2020-05-13 10:53 被阅读0次

155. 最小栈

常数时间内检索最小元素

使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。【示意图】

  • 当一个元素要入栈时,我们取当前辅助栈的栈顶存储的最小值,与当前元素比较得出最小值,将这个最小值插入辅助栈中;
  • 当一个元素要出栈时,我们把辅助栈的栈顶元素也一并弹出;
  • 在任意一个时刻,栈内元素的最小值就存储在辅助栈的栈顶元素中。

时间复杂度 O(1) 空间复杂度 O(n)

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []
        self.minval_stack = []

    def push(self, x: int) -> None:
        self.stack.append(x)
        if not self.minval_stack or x <= self.minval_stack[-1]:
            self.minval_stack.append(x)

    def pop(self) -> None:
        tmp = self.stack.pop()
        if tmp == self.minval_stack[-1]:
            return self.minval_stack.pop()
        else:
            return tmp


    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.minval_stack[-1]

相关文章

  • 栈--最小栈问题

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

  • 栈 问题

    155. 最小栈 常数时间内检索最小元素 使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。...

  • TrampolineHook - 解决栈污染问题支持变参 Hoo

    TrampolineHook - 解决栈污染问题支持变参 HookTrampolineHook - 解决栈污染问题...

  • 华为鸿蒙系统 or EMUI10以上系统(包括10),冷启动一个

    记录一个任务栈的问题~ 问题描述:app有2个任务栈。 任务栈1 中有页面 AActivity ,BActivit...

  • 入栈出栈问题

    声明: 本总结仅为个人学习总结,以防止遗忘而作,不得转载和商用。给定无重复元素的两个等长数组,分别表述入栈序列和出...

  • 栈思想-算法题解

    栈思想 指的是利用栈的特性(先进后出)去解决问题,那么什么问题适合用栈思想解决了? 数据是线性的。 问题中常常涉及...

  • 手写栈·队列

    队列 栈(有问题??)

  • 剑指offer 面试题21:包含min函数的栈

    问题:定义栈的数据结构,请在该类型中实现min()接口 解法:除了正常的数据栈之外,开辟一个辅助栈。数据栈入栈时,...

  • 栈思想解决问题+练习题

    栈的思想应⽤: 指的是利⽤栈的特性(先进后出)去解决问题,那么什么问题适合⽤栈思想解决了? 充分阅读题⽬.了解题⽬...

  • 栈问题之栈的反转

    1. 可以使用O(N)空间 可以使用队列这个很简单了,就是将栈每个元素依次pop放入队列中,然后从队列中依次pus...

网友评论

      本文标题:栈 问题

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