class MyQueue:
def __init__(self): self.ins=[]; self.out=[]
def push(self,x): self.ins.append(x)
def pop(self):
if not self.out:
while self.ins: self.out.append(self.ins.pop())
return self.out.pop()
def peek(self):
if not self.out:
while self.ins: self.out.append(self.ins.pop())
return self.out[-1]
def empty(self): return not self.ins and not self.out
class MyQueue{
java.util.Stack<Integer> in=new java.util.Stack<>(),out=new java.util.Stack<>();
public void push(int x){in.push(x);}
public int pop(){peek();return out.pop();}
public int peek(){
if(out.isEmpty()) while(!in.isEmpty()) out.push(in.pop());
return out.peek();
}
public boolean empty(){return in.isEmpty()&&out.isEmpty();}
}
Two-stack queue. out[-1] vs peek(). list as natural stack.
class MyQueue:
def __init__(self): self.ins=[]; self.out=[]
def push(self,x): self.ins.append(x)
def pop(self):
if not self.out:
while self.ins: self.out.append(self.ins.pop())
return self.out.pop()
def peek(self):
if not self.out:
while self.ins: self.out.append(self.ins.pop())
return self.out[-1]
def empty(self): return not self.ins and not self.out
class MyQueue{
java.util.Stack<Integer> in=new java.util.Stack<>(),out=new java.util.Stack<>();
public void push(int x){in.push(x);}
public int pop(){peek();return out.pop();}
public int peek(){
if(out.isEmpty()) while(!in.isEmpty()) out.push(in.pop());
return out.peek();
}
public boolean empty(){return in.isEmpty()&&out.isEmpty();}
}
1. Push to in-stack 2. Transfer when out empty 3. Pop from out