python-leetcode 69.最小栈

题目:

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


辅助栈法:

1:使用两个栈,一个主栈用于存储所有元素,另一个辅助栈用于存储当前元素的最小值

2: 每次push时,将元素压入主栈,同时比较当前元素与辅助栈顶元素,将较小者压入辅助栈

3:每次pop时,同时从主栈和辅助栈弹出元素

4:getmin,直接返回辅助栈最小的栈顶元素

python 复制代码
class MinStack(object):

    def __init__(self):
        self.stack=[]
        self.min_stack=[]

    def push(self, val):
        """
        :type val: int
        :rtype: None
        """
        self.stack.append(val)
        if not self.min_stack or val <=self.min_stack[-1]:
            self.min_stack.append(val)

    def pop(self):
        """
        :rtype: None
        """
        if self.stack:
            top_val=self.stack.pop()
            if top_val==self.min_stack[-1]:
                self.min_stack.pop()
        

    def top(self):
        """
        :rtype: int
        """
        if self.stack:
            return self.stack[-1]

    def getMin(self):
        """
        :rtype: int
        """
        if self.min_stack:
            return self.min_stack[-1]


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
相关推荐
南枝异客5 分钟前
四数之和-力扣
java·算法·leetcode
凌肖战15 分钟前
C语言中提供的第三方库之哈希表实现
算法·哈希算法
lingling00928 分钟前
迁移科技:破解纸箱拆垛场景的自动化升级密码
算法
Coding小公仔1 小时前
几种经典排序算法的C++实现
c++·算法·排序算法
汪子熙2 小时前
在 Word 里编写 Visual Basic 调用 DeepSeek API
后端·算法·架构
什么半岛铁盒2 小时前
Linux中INADDR_ANY详解
开发语言·c++·算法
物联网嵌入式小冉学长2 小时前
2.线性表的链式存储-链表
数据结构·链表
顾小玙2 小时前
前缀和:leetcode974--和可被K整除的子数组
数据结构·算法
猿来不是梦3 小时前
RT_Thread内核源码分析(五)——内存管理@小堆内存管理算法
stm32·单片机·算法·系统架构·rt_thread操作系统