classMinStack:def__init__(self):""" initialize your data structure here. """self.s=[]self.mins=[inf]defpush(self,val:int)->None:self.s.append(val)self.mins.append(min(self.mins[-1],val))defpop(self)->None:self.s.pop()self.mins.pop()deftop(self)->int:returnself.s[-1]defgetMin(self)->int:returnself.mins[-1]# Your MinStack object will be instantiated and called as such:# obj = MinStack()# obj.push(val)# obj.pop()# param_3 = obj.top()# param_4 = obj.getMin()
classMinStack{privateDeque<Integer>stk1=newArrayDeque<>();privateDeque<Integer>stk2=newArrayDeque<>();/** initialize your data structure here. */publicMinStack(){stk2.push(Integer.MAX_VALUE);}publicvoidpush(intx){stk1.push(x);stk2.push(Math.min(x,stk2.peek()));}publicvoidpop(){stk1.pop();stk2.pop();}publicinttop(){returnstk1.peek();}publicintgetMin(){returnstk2.peek();}}/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
classMinStack{public:/** initialize your data structure here. */MinStack(){stk2.push(INT_MAX);}voidpush(intx){stk1.push(x);stk2.push(min(x,stk2.top()));}voidpop(){stk1.pop();stk2.pop();}inttop(){returnstk1.top();}intgetMin(){returnstk2.top();}private:stack<int>stk1;stack<int>stk2;};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(x); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */
typeMinStackstruct{stk1[]intstk2[]int}/** initialize your data structure here. */funcConstructor()MinStack{returnMinStack{[]int{},[]int{math.MaxInt32}}}func(this*MinStack)Push(xint){this.stk1=append(this.stk1,x)this.stk2=append(this.stk2,min(x,this.stk2[len(this.stk2)-1]))}func(this*MinStack)Pop(){this.stk1=this.stk1[:len(this.stk1)-1]this.stk2=this.stk2[:len(this.stk2)-1]}func(this*MinStack)Top()int{returnthis.stk1[len(this.stk1)-1]}func(this*MinStack)GetMin()int{returnthis.stk2[len(this.stk2)-1]}/** * Your MinStack object will be instantiated and called as such: * obj := Constructor(); * obj.Push(x); * obj.Pop(); * param_3 := obj.Top(); * param_4 := obj.GetMin(); */
classMinStack{stack:number[];mins:number[];constructor(){this.stack=[];this.mins=[];}push(x:number):void{this.stack.push(x);this.mins.push(Math.min(this.getMin(),x));}pop():void{this.stack.pop();this.mins.pop();}top():number{returnthis.stack[this.stack.length-1];}getMin():number{returnthis.mins.length==0?Infinity:this.mins[this.mins.length-1];}}/** * Your MinStack object will be instantiated and called as such: * var obj = new MinStack() * obj.push(x) * obj.pop() * var param_3 = obj.top() * var param_4 = obj.getMin() */
usestd::collections::VecDeque;structMinStack{stack:VecDeque<i32>,min_stack:VecDeque<i32>,}/** * `&self` means the method takes an immutable reference. * If you need a mutable reference, change it to `&mut self` instead. */implMinStack{/** initialize your data structure here. */fnnew()->Self{Self{stack:VecDeque::new(),min_stack:VecDeque::new(),}}fnpush(&mutself,x:i32){self.stack.push_back(x);ifself.min_stack.is_empty()||*self.min_stack.back().unwrap()>=x{self.min_stack.push_back(x);}}fnpop(&mutself){letval=self.stack.pop_back().unwrap();if*self.min_stack.back().unwrap()==val{self.min_stack.pop_back();}}fntop(&self)->i32{*self.stack.back().unwrap()}fnget_min(&self)->i32{*self.min_stack.back().unwrap()}}
publicclassMinStack{privateStack<int>stk1=newStack<int>();privateStack<int>stk2=newStack<int>();/** initialize your data structure here. */publicMinStack(){stk2.Push(int.MaxValue);}publicvoidPush(intx){stk1.Push(x);stk2.Push(Math.Min(x,GetMin()));}publicvoidPop(){stk1.Pop();stk2.Pop();}publicintTop(){returnstk1.Peek();}publicintGetMin(){returnstk2.Peek();}}/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.Push(x); * obj.Pop(); * int param_3 = obj.Top(); * int param_4 = obj.GetMin(); */
classMinStack{privatevarstk1:[Int]privatevarstk2:[Int]init(){stk1=[]stk2=[Int.max]}funcpush(_x:Int){stk1.append(x)stk2.append(min(x,stk2.last!))}funcpop(){stk1.removeLast()stk2.removeLast()}functop()->Int{returnstk1.last!}funcgetMin()->Int{returnstk2.last!}}/** * Your MinStack object will be instantiated and called as such: * let obj = MinStack(); * obj.push(x); * obj.pop(); * let param_3 = obj.top(); * let param_4 = obj.getMin(); */