问题描述:实现一个栈的功能,并能返回最小值。
题目链接:155. Min Stack
偷懒的做法了,不过要想记录最小值,在pop之后就不得不重新整理最小值,每次push的时候还要比较,不值当。
在讨论区看到了一种方法就是利用加减来实现记录最小值,还有的开辟另外一个空间存储当前数下的最小值。
推荐答案迭代式记忆最小值:迭代式记忆最小值,加减操作。
代码实现如下:
class MinStack:
def __init__(self):
self.q = []
# @param x, an integer
# @return an integer
def push(self, x):
curMin = self.getMin()
if curMin == None or x < curMin:
curMin = x
self.q.append((x, curMin));
# @return nothing
def pop(self):
self.q.pop()
# @return an integer
def top(self):
if len(self.q) == 0:
return None
else:
return self.q[len(self.q) - 1][0]
# @return an integer
def getMin(self):
if len(self.q) == 0:
return None
else:
return self.q[len(self.q) - 1][1]