# Solution to LeetCode #232: Implement Queue using Stacks (Python)

## Top 0.7% of submissions

This is an easy LeetCode problem

Implement a first in first out (FIFO) queue using only two stacks. The implemented queue should support all the functions of a normal queue (`push`, `peek`, `pop`, and `empty`).

Implement the `MyQueue` class:

• `void push(int x)` Pushes element x to the back of the queue.
• `int pop()` Removes the element from the front of the queue and returns it.
• `int peek()` Returns the element at the front of the queue.
• `boolean empty()` Returns `true` if the queue is empty, `false` otherwise.

Notes:

• You must use only standard operations of a stack, which means only `push to top`, `peek/pop from top`, `size`, and `is empty` operations are valid.
• Depending on your language, the stack may not be supported natively. You may simulate a stack using a list or deque (double-ended queue) as long as you use only a stack’s standard operations.

# Python’s straightforward solution

Python makes this challenge very easy. Pretty much every operation is natively supported.

## Initialize the class

In your `__init__` function, set an instance variable that will hold all of our data.

`class MyQueue:    def __init__(self):        self._fifo = []`

When a class gets instantiated (in this case by calling `MyQueue()`) the `__init__()` function gets executed. Setting an instance variable saves this data to the created instance and allows you to access the `self._fifo` variable from other class functions.

## Implementing push

`push` adds an item to the end of the queue.

`push`-ing to a queue is natively supported in Python via the `append` function.

`class MyQueue:    def push(self, x: int) -> None:        self._fifo.append(x)`