1 最小栈
题目描述为在常数时间内找到栈的最小值,所以不能通过遍历去找最小值
考虑在入栈的时候建一个辅助栈。最终目标是常数时间取栈顶元素。在push,pop,top环节均需注意
辅助栈需要和栈保持长度一致 (没想明白)
# 题目描述为在常数时间内找到栈的最小值,所以不能通过遍历去找最小值
# 考虑在入栈的时候建一个辅助栈。最终目标是常数时间取栈顶元素。在push,pop,top环节均需注意
# 辅助栈需要和栈保持长度一致 ??
class minstack:
def __init__(self):
self.list = []
self.helper = [] # 建一个辅助栈
def push(self,x:int):
if len(self.helper) == 0 or x < self.list[-1]:
self.list.append(x)
self.helper.append(x)
else:
self.helper.append(self.helper[-1])
return 0 # 无返回值,但是毕竟是函数,得有返回值
def pop(self):
self.list.remove(-1)
return 0
def top(self):
return self.list[0]
def getMin(self):
min = 10000000
for i in range(len(self.list)):
if self.list[i] < min:
min = self.list[i]
return min
a = minstack()
a.push(1)
a.push(2)
print(a.getMin())