classMinStack:def__init__(self):self.stk1=[]self.stk2=[inf]defpush(self,x:int)->None:self.stk1.append(x)self.stk2.append(min(x,self.stk2[-1]))defpop(self)->None:self.stk1.pop()self.stk2.pop()deftop(self)->int:returnself.stk1[-1]defgetMin(self)->int:returnself.stk2[-1]# Your MinStack object will be instantiated and called as such:# obj = MinStack()# obj.push(x)# 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()}}
/** * initialize your data structure here. */varMinStack=function(){this.stack=[];this.minStack=[];};/** * @param {number} x * @return {void} */MinStack.prototype.push=function(x){this.stack.unshift(x);if(!this.minStack.length||this.minStack[0]>=x){this.minStack.unshift(x);}};/** * @return {void} */MinStack.prototype.pop=function(){if(this.stack.shift()===this.minStack[0]){this.minStack.shift();}};/** * @return {number} */MinStack.prototype.top=function(){returnthis.stack[0];};/** * @return {number} */MinStack.prototype.min=function(){returnthis.minStack[0];};/** * 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.min() */
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{privatevarstack:[Int]privatevarminStack:[Int]init(){stack=[]minStack=[Int.max]}funcpush(_x:Int){stack.append(x)minStack.append(min(x,minStack.last!))}funcpop(){stack.removeLast()minStack.removeLast()}functop()->Int{returnstack.last!}funcgetMin()->Int{returnminStack.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(); */