【力扣100】【好题】155.最小栈

添加链接描述

python 复制代码
class MinStack:

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

    def push(self, val: int) -> None:
        if not self.stack:
            self.stack.append([val,val])
        else:
            self.stack.append([val,min(val,self.stack[-1][1])])


    def pop(self) -> None:
        self.stack.pop()

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

    def getMin(self) -> int:
        return self.stack[-1][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()

思路:

  1. 题目要求在常数时间内,所以在getmin()函数中使用sort或者min这种弱智的方法
  2. 我们把每个进入栈的元素定义为[ val , min ] ,让元素以这种方式入栈,每次只需要维护这个最小值就可以了
  3. python中用list定义栈的好处是,栈顶元素就是stack[-1]
相关推荐
海棠AI实验室6 分钟前
第十七章 调试与排错:读懂 Traceback 的方法论
python·pandas·调试
2501_9418787413 分钟前
在奥克兰云原生实践中构建动态配置中心以支撑系统稳定演进的工程经验总结
开发语言·python
Rabbit_QL13 分钟前
【Pytorch使用】CUDA 显存管理与 OOM 排查实战:以 PyTorch 联邦学习训练为例
人工智能·pytorch·python
weixin_4432978813 分钟前
Python打卡训练营第31天
开发语言·python
苦藤新鸡14 分钟前
6.三数之和
c语言·c++·算法·力扣
宏基骑士23 分钟前
Python之类中函数间的参数传递(有继承和无继承)
python
540_54027 分钟前
ADVANCE Day41
人工智能·python·深度学习
0思必得042 分钟前
[Web自动化] BeautifulSoup导航文档树
前端·python·自动化·html·beautifulsoup
s09071361 小时前
连通域标记:从原理到数学公式全解析
图像处理·算法·fpga开发·连通域标记
vyuvyucd1 小时前
Python条件与循环语句全解析
python