(漫画算法也有这道题)
想调用min函数,我们需要有一个辅助栈,记录目前的最小值。
每次进行push操作,辅助栈中要压入当前数据栈中最小数字。
进行pop操作时,辅助栈弹出栈底数字。
进行min操作时,得到辅助栈栈底数字。
比如:
- 压入4:辅助栈[4]
- 压入5:辅助栈[4,4]
- 压入3:辅助栈[4,4,3]
- pop: 辅助栈[4,4]
- min: 4
class Solution: def __init__(self): # 数据栈 self.data = [] # 辅助栈 self.helper = [] def push(self, node): # write code here self.data.append(node) #保存最小元素,考虑当前辅助栈为空 if len(self.helper) == 0 or node <= self.helper[-1]: self.helper.append(node) #将当前辅助栈中最小元素压入,保持辅助栈和数据栈中元素个数相同 else: self.helper.append(self.helper[-1]) def pop(self): # write code here if self.data: self.helper.pop() return self.data.pop() def top(self): # write code here if self.data: return self.data[-1] def min(self): # write code here if self.helper: return self.helper[-1]