【力扣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]
相关推荐
行云流水剑7 分钟前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
music&movie38 分钟前
算法工程师认知水平要求总结
人工智能·算法
心扬1 小时前
python生成器
开发语言·python
mouseliu1 小时前
python之二:docker部署项目
前端·python
狂小虎1 小时前
亲测解决self.transform is not exist
python·深度学习
Python智慧行囊1 小时前
Python 中 Django 中间件:原理、方法与实战应用
python·中间件·架构·django·开发
深科文库1 小时前
构建 MCP 服务器:第 3 部分 — 添加提示
服务器·python·chatgpt·langchain·prompt·aigc·agi
laocui11 小时前
Σ∆ 数字滤波
人工智能·算法
yzx9910132 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化