【力扣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 分钟前
【数据结构与算法】新二叉树
数据结构·算法·二叉树
2201_761040597 分钟前
Golang怎么安全关闭channel_Golang channel关闭教程【通俗】
jvm·数据库·python
jerryinwuhan8 分钟前
基于结构可控性的给水管网传感器布点选择算法
数据库·算法
m0_493934538 分钟前
Redis怎样合并多天访客数据_通过PFMERGE指令聚合HyperLogLog记录
jvm·数据库·python
南宫萧幕8 分钟前
车辆控制基础:从 EKF 状态估计到非线性 MPC 轨迹跟踪的闭环实现
算法·matlab·汽车·控制·pid
tjc199010058 分钟前
bootstrap怎么实现响应式的文章瀑布流布局
jvm·数据库·python
点PY9 分钟前
《高质量的实时直接体绘制算法》论文精读
算法
X journey11 分钟前
机器学习进阶(24):主成分分析PCA
人工智能·算法·机器学习
qq_1898070312 分钟前
SQL嵌套查询与物化视图_提升读性能的组合策略
jvm·数据库·python
2401_8323655213 分钟前
如何用消息广播机制让 Shared Worker 通知所有连接的页面
jvm·数据库·python