LeetCode简单题之最小栈

news/2024/11/24 12:10:17/

题目

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例 1:
输入:
[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
提示:
-2^31 <= val <= 2 ^31 - 1
pop、top 和 getMin 操作总是在 非空栈 上调用
push, pop, top, and getMin最多被调用 3 * 10^4 次
来源:力扣(LeetCode)

解题思路

  这个题肯定是不能在调用getMin的时候才计算最小值,否则将会超时。一个常用的思路就是将当前栈的最小值和栈顶的元素绑在一起,这样的话对于栈不管怎么操作栈顶元素都会维护一个当前栈的最小值。

class MinStack:def __init__(self):self.stack=[]def push(self, val: int) -> None:if self.stack:if val>=self.getMin():self.stack.append((val,self.getMin()))else:self.stack.append((val,val))else:self.stack.append((val,val))def pop(self) -> None:return self.stack.pop()[0]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()

在这里插入图片描述


http://www.ppmy.cn/news/605386.html

相关文章

【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

前言 大家好&#xff0c;我是秋意零。 在上一篇中&#xff0c;我们讲解了 StatefulSet 的拓扑状态&#xff1b;我们发现&#xff0c;它的拓扑状态&#xff0c;就是顺序启动/删除、Pod 名称编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 …

LeetCode简单题之公交站间的距离

题目 环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘客从出发点 sta…

如何直观地理解「协方差矩阵」?

如何直观地理解「协方差矩阵」&#xff1f;Xinyu ChenUrban Traffic Data Analytics372 人赞同了该文章协方差矩阵在统计学和机器学习中随处可见&#xff0c;一般而言&#xff0c;可视作方差和协方差两部分组成&#xff0c;即方差构成了对角线上的元素&#xff0c;协方差构成了…

LeetCode简单题之最大三角形面积

题目 给定包含多个点的集合&#xff0c;从其中取三个点组成三角形&#xff0c;返回能组成的最大三角形的面积。 示例: 输入: points [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的&#xff0c;面积为2。 注意: 3 < poi…

协方差的意义

大 中 小 终于明白协方差的意义了 <div class"article_data_left">2018-03-15<span class"a_username"> <a href"http://www.360doc.com/userhome/48898194" id"savernickname" target"_blank" oncli…

LeetCode中等题之字典序排数

题目 给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1&#xff1a; 输入&#xff1a;n 13 输出&#xff1a;[1,10,11,12,13,2,3,4,5,6,7,8,9] 示例 2&#xff1a; 输入&#xff1a;n…

方差协方差以及协方差矩阵

协方差矩阵在统计学和机器学习中随处可见&#xff0c;一般而言&#xff0c;可视作方差和协方差两部分组成&#xff0c;即方差构成了对角线上的元素&#xff0c;协方差构成了非对角线上的元素。本文旨在从几何角度介绍我们所熟知的协方差矩阵。文章结构方差和协方差的定义从方差…