代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T92% S90%):数据结构设计题。在栈的基础上能在常数时间获取到最小值,因此肯定需要把最小值存下来,在push和pop时维护,这里使用一个类内变量存储
push():加到栈顶,如果比当前最小值小则更新pop():弹出栈顶,如果此时弹出的就是最小值则一次遍历更新最小值,如果栈为空则将最小值归为Nonetop():直接返回栈顶(题目保证在栈非空时调用)getMin():直接返回最小值(题目保证在栈非空时调用)
class MinStack(object):
def __init__(self):
self.stack = []
self.minVal = None
def push(self, val: int) -> None:
self.stack.append(val)
if self.minVal is None or val < self.minVal:
self.minVal = val
def pop(self) -> None:
re = self.stack.pop(-1)
if re == self.minVal:
if self.stack != []:
self.minVal = self.stack[-1]
for val in self.stack:
if val < self.minVal: self.minVal = val
else: self.minVal = None
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.
本文介绍了一个Python类`MinStack`,该类扩展了标准栈的功能,允许在常数时间内获取栈内的最小元素。在`push()`、`pop()`和`getMin()`方法中维护最小值,确保高效操作。`push()`时比较并更新最小值,`pop()`时检查并更新最小值,而`getMin()`则直接返回最小值。
163

被折叠的 条评论
为什么被折叠?



