【力扣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]
相关推荐
磊 子3 分钟前
多态类原理+四种类型转换+异常处理
开发语言·c++·算法
小白学大数据7 分钟前
基于大模型的Python智能爬虫:语义识别与数据清洗实践
开发语言·爬虫·python·数据分析
Cloud_Shy61810 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(附录 B 高级 VS Code 功能)
vscode·python·jupyter·数据分析·excel
进击切图仔14 分钟前
从零手写 RAG
python·huggingface·rag
Dxy123931021621 分钟前
Python请求方式介绍:JSON、表单及其他常见数据传输格式
数据库·python·json
西洼工作室28 分钟前
个人开发者接入阿里云号码认证服务AliCloud-NirvanaPns实现一键登录
python·阿里云·uni-app·全栈·认证授权
半城抹茶1 小时前
TradingAgents-CN 项目目录文档
python
光影6271 小时前
Selenium自动化测试---实战踩坑实录
python·selenium·测试工具·百度
HappyAcmen1 小时前
2.lcut返回列表用法
python
染指11101 小时前
3.AI大模型-token是什么-大模型底层运行机制
人工智能·算法·机器学习