运用python中的函数
每次push比较一下,O(n)
每次pop判断一下,是和不是要分开操作O(n)
剩下俩都是O(1)
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.data = []
self.min_index = 0
def push(self, x: int) -> None:
self.data.append(x)
if self.data[self.min_index] > x:
self.min_index = len(self.data) - 1
def pop(self) -> None:
arrange_flag = False
if len(self.data) - 1 == self.min_index:
arrange_flag = True
e = self.data.pop()
self.arrange()
return e
def top(self) -> int:
return self.data[-1]
def getMin(self) -> int:
if len(self.data) < 0:
return None
return self.data[self.min_index]
def arrange(self) -> None:
if len(self.data) <= 0:
return
min_index = 0
for i in range(len(self.data)):
if self.data[i] < self.data[min_index]:
min_index = i
self.min_index = min_index