DSA Patterns (Multi-Lang)•Part 4: Stacks, Queues & Monotonic Stacks (29 - 36)
Implement Queue using Stacks.
In Simple Words:
Use two stacks: inStack for pushes, outStack for pops/peeks. When outStack is empty, transfer all elements from inStack to reverse their order into FIFO.
- Time: Amortized $O(1)$ per operation | Space: $O(N)$
Multi-Language SolutionsPython 3 • JavaScript • TypeScript • Java • C++
Switch tabs or choose Allclass MyQueue:
def __init__(self):
self.in_s = []
self.out_s = []
def push(self, x: int) -> None:
self.in_s.append(x)
def pop(self) -> int:
self.peek()
return self.out_s.pop()
def peek(self) -> int:
if not self.out_s:
while self.in_s:
self.out_s.append(self.in_s.pop())
return self.out_s[-1]
def empty(self) -> bool:
return not self.in_s and not self.out_s