classMyStack:def__init__(self):self.q1=deque()self.q2=deque()defpush(self,x:int)->None:self.q2.append(x)whileself.q1:self.q2.append(self.q1.popleft())self.q1,self.q2=self.q2,self.q1defpop(self)->int:returnself.q1.popleft()deftop(self)->int:returnself.q1[0]defempty(self)->bool:returnlen(self.q1)==0# Your MyStack object will be instantiated and called as such:# obj = MyStack()# obj.push(x)# param_2 = obj.pop()# param_3 = obj.top()# param_4 = obj.empty()
importjava.util.Deque;classMyStack{privateDeque<Integer>q1=newArrayDeque<>();privateDeque<Integer>q2=newArrayDeque<>();publicMyStack(){}publicvoidpush(intx){q2.offer(x);while(!q1.isEmpty()){q2.offer(q1.poll());}Deque<Integer>q=q1;q1=q2;q2=q;}publicintpop(){returnq1.poll();}publicinttop(){returnq1.peek();}publicbooleanempty(){returnq1.isEmpty();}}/** * Your MyStack object will be instantiated and called as such: * MyStack obj = new MyStack(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.top(); * boolean param_4 = obj.empty(); */
classMyStack{public:MyStack(){}voidpush(intx){q2.push(x);while(!q1.empty()){q2.push(q1.front());q1.pop();}swap(q1,q2);}intpop(){intx=q1.front();q1.pop();returnx;}inttop(){returnq1.front();}boolempty(){returnq1.empty();}private:queue<int>q1;queue<int>q2;};/** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */
classMyStack{q1:number[]=[];q2:number[]=[];constructor(){}push(x:number):void{this.q2.push(x);while(this.q1.length){this.q2.push(this.q1.shift()!);}[this.q1,this.q2]=[this.q2,this.q1];}pop():number{returnthis.q1.shift()!;}top():number{returnthis.q1[0];}empty():boolean{returnthis.q1.length===0;}}/** * Your MyStack object will be instantiated and called as such: * var obj = new MyStack() * obj.push(x) * var param_2 = obj.pop() * var param_3 = obj.top() * var param_4 = obj.empty() */
usestd::collections::VecDeque;structMyStack{/// There could only be two status at all time/// 1. One contains N elements, the other is empty/// 2. One contains N - 1 elements, the other contains exactly 1 elementq_1:VecDeque<i32>,q_2:VecDeque<i32>,// Either 1 or 2, originally begins from 1index:i32,}implMyStack{fnnew()->Self{Self{q_1:VecDeque::new(),q_2:VecDeque::new(),index:1,}}fnmove_data(&mutself){// Always move from q1 to q2assert!(self.q_2.len()==1);while!self.q_1.is_empty(){self.q_2.push_back(self.q_1.pop_front().unwrap());}lettmp=self.q_1.clone();self.q_1=self.q_2.clone();self.q_2=tmp;}fnpush(&mutself,x:i32){self.q_2.push_back(x);self.move_data();}fnpop(&mutself)->i32{self.q_1.pop_front().unwrap()}fntop(&mutself)->i32{*self.q_1.front().unwrap()}fnempty(&self)->bool{self.q_1.is_empty()}}