https://leetcode-cn.com/problems/min-stack/
需要注意的点
思路:
维护两个栈,一个保存当前值的最小值,一个保存当前值
当推入/推出当前值时,推入/推出当前值的最小值
要理解栈的原型
leetcode cn 的官方解释很清楚
import mathclass MinStack(object):'''思路:维护两个栈,一个保存当前值的最小值,一个保存当前值当推入/推出当前值时,推入/推出当前值的最小值要理解栈的原型leetcode cn 的官方解释很清楚'''# 维护一个最小值栈def __init__(self):self.list = []self.minlist = [math.inf]''''''def push(self, val):""":type val: int:rtype: None"""self.list.append(val)self.minlist.append(min(val, self.minlist[-1]))def pop(self):""":rtype: None"""self.list.pop()self.minlist.pop()def top(self):""":rtype: int"""return self.list[-1]def getMin(self):""":rtype: int"""return self.minlist[-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()
