📌 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
- MinStack() 初始化堆栈对象。
- void push(int val) 将元素val推入堆栈。
- void pop() 删除堆栈顶部的元素。
- int top() 获取堆栈顶部的元素。
- int getMin() 获取堆栈中的最小元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import math
class MinStack2Arr: def __init__(self): """内部使用了两个栈(一个辅助栈)""" self.stack = [] self.min_stack = [math.inf]
def push(self, x: int) -> None: self.stack.append(x) self.min_stack.append(min(x, self.min_stack[-1]))
def pop(self) -> None: self.stack.pop() self.min_stack.pop()
def top(self) -> int: return self.stack[-1]
def getMin(self) -> int: return self.min_stack[-1]
|