1、要用两个栈,stack用于存储元素,mins用于存储最小值,每个位置的元素都有一个对应的最小值,也就是stack和mins的长度同步增加和减少;当需要得到目前栈中的最小值的时候,直接返回mins的栈顶元素mins[-1]即可
2、在mins栈中先添加一个最大值 float("inf"),因为以后每次添加都会和栈顶元素比较,如果栈为空的话代码要多写几行,先放一个最大值会方便一点

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack = []
        self.mins = [float("inf")]
    def push(self, node):
        # write code here
        self.stack.append(node)
        self.mins.append(min(self.mins[-1], node))
    def pop(self):
        # write code here
        self.stack.pop()
        self.mins.pop()
    def top(self):
        # write code here
        return self.stack[-1]
    def min(self):
        # write code here
        return self.mins[-1]