**
设计一个有getMin功能的栈
**
设计一个具有getMin()功能的栈:
1.push、pop、getMin()时间复杂度为O(1)
2.设计栈时可以使用现有的栈结构
一个栈本身有先进后出的顺序,要求当前的最小的值,又能实现pop弹出,则考虑用两个栈来实现。
方法一
class Stack1:
def __init__(self,object=None) -> None:
self.stack=[object]
self.stack_min=[object]
def push(self,x):
self.stack.insert(0,x)
if x<=self.stack_min(0) or self.stack_min(0)==None:
self.stack_min.insert(0,x)
def pop(self):
x=self.stack.pop(0)
if x==self.stack_min(0):
self.stack_min.pop(0)
return x
def getMin(self):
return self.stack_min(0)
方法二
class Stack2:
def __init__(self,object=None) -> None:
self.stack=[object]
self.stack_min=[object]
def push(self,x):
self.stack.insert(0,x)
if x<self.stack_min(0) or self.stack_min(0)==None:
self.stack_min.insert(0,x)
else:
flag=self.stack_min(0)
self.stack_min.insert(0,flag)
def pop(self):
x=self.stack.pop(0)
self.stack_min.pop(0)
return x
def getMin(self):
return self.stack_min(0)
开始刷题,不能废了自己的双手