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]
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]