最小栈
https://leetcode-cn.com/problems/min-stack/ (opens new window) 需要注意的点 ** 思路:** ** 维护两个栈,一个保存当前值的最小值,一个保存当前值** ** 当推入/推出当前值时,推入/推出当前值的最小值** ** 要理解栈的原型** ** leetcode cn 的官方解释很清楚**
import math
class 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()