栈的最小值
题目描述 算法思想 栈的常规操作,这里就不再赘述。这里主要讲解获取最小值的方法。 也就是设立一个辅助栈用以存储最小元素,在元素入栈时,如果辅助栈为空,则压入主栈的元素也压入辅助栈,往后辅助栈中只压入比辅助栈栈顶元素小的元素,这样就达成了目的。
代码实现
class MinStack: def __init__(self): self.stack = [] self.minstack = [] def push(self, x: int) -> None: self.stack.append(x) if not self.minstack or x <= self.minstack[-1]: self.minstack.append(x) def pop(self) -> None: x = self.stack.pop() if x == self.minstack[-1]: self.minstack.pop() def top(self) -> int: return self.stack[-1] def getMin(self) -> int: return self.minstack[-1] # Your MinStack object will be instantiated and called as such: # obj = MinStack() # obj.push(x) # obj.pop() # param_3 = obj.top() # param_4 = obj.getMin()