【力扣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]
相关推荐
亮亮爱刷题1 分钟前
算法刷题-回溯
算法
WangY_ZQ6 分钟前
Python 如何在Python 3.6上安装PIP
linux·python·pip
聚客AI23 分钟前
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
人工智能·pytorch·python·rnn·神经网络·机器学习·自然语言处理
狮子也疯狂30 分钟前
基于Python的气象数据分析及可视化研究
python·信息可视化·数据分析
Neil今天也要学习30 分钟前
永磁同步电机无速度算法--自适应龙贝格观测器
算法
蓝婷儿1 小时前
6个月Python学习计划 Day 18 - 项目实战 · 学生成绩管理系统(OOP版)
开发语言·python·学习
HINOTOR_1 小时前
DAY 25 异常处理
开发语言·python
yorushika_1 小时前
python打卡训练营打卡记录day49
开发语言·python·tensorboard·cbam
qq_189370492 小时前
Jupyter notebook的文章结构目录查看方式和汉化方法
python·jupyter
晨曦5432102 小时前
将 Jupyter Notebook 的默认存储路径从 C 盘迁移到 D 盘,可以通过以下步骤实现:
ide·python·jupyter