(漫画算法也有这道题)
想调用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]
京公网安备 11010502036488号