当前位置: 首页 > 后端技术 > Python

力扣简知offer面试题30.Stackcontainingminfunction

时间:2023-03-26 17:48:37 Python

面试题30.Stackcontainingminfunction本题同Leetcode155题:https://leetcode-cn.com/problems/min-stack/未使用额外的空间无法达到O(1)的复杂度。定义一个额外的堆栈m来存储当前的最小值。参考和详细解析:liweiwei1419的题解python解法classMinStack:def__init__(self):"""在这里初始化你的数据结构。"""self.s=[]self.m=[]defpush(self,x:int)->无:如果不是self.m或x<=self.m[-1]:self.m.append(x)self.s.append(x)defpop(self)->无:x=self.s.pop()如果x==self.m[-1]:self.m.pop()返回xdeftop(self)->int:returnself.s[-1]defmin(self)->int:returnself.m[-1]#你的MinStack对象将被实例化并这样调用:#obj=MinStack()#obj.push(x)#obj.pop()#param_3=obj.top()#param_4=obj.min()c++解法#includeclassMinStack{stacks,m;public:/**在这里初始化你的数据结构。*/MinStack(){}voidpush(intx){s.push(x);如果(m.empty()||x<=m.top()){m.push(x);}}voidpop(){if(m.top()==s.top()){m.pop();}s.pop();}inttop(){返回s.top();}intmin(){返回m.top();}};/***您的MinStack对象将被实例化并这样调用:*MinStack*obj=newMinStack();*obj->推(x);*obj->pop();*intparam_3=obj->top();*intparam_4=obj->min();*/