class stack1(object):
def __init__(self):
self.stackData = []
self.stackMin = []
def push(self,item):
self.stackData.append(item)
if not self.stackMin:
self.stackMin.append(item)
else:
self.stackMin.append(min(self.stackMin[-1],item))
return self.stackData,self.stackMin
def pop(self):
if not self.stackData:
raise Exception('stack is empty')
return self.stackData.pop(),self.stackMin.pop()
def GetMin(self):
if not self.stackMin:
raise Exception('stack is empty')
return self.stackMin[-1]
a = stack1()
a.push(6)
a.push(4)
a.push(2)
a.push(7)
a.push(1)
b,c = a.push(9)
print(b,c)
d,e = a.pop()
print(b,c)
print(d,e)
m = a.GetMin()
print(m)
用兩個數組
O(1)時間