Implement Queue using Stacks

Medium~15 min

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:

  • MyQueue() — Initializes the queue object.
  • push(x) — Pushes element x to the back of the queue.
  • pop() — Removes the element from the front of the queue and returns it.
  • peek() — Returns the element at the front of the queue without removing it.
  • empty() — Returns true if the queue is empty, false otherwise.

Notes:

  • You must use only standard operations of a stack: push to top, peek/pop from top, size, and is empty.
  • Depending on your language, the stack may not be natively supported. You may simulate a stack using a list or deque as long as you use only a stack's standard operations.

Examples

Example 1
Input: ["MyQueue","push","push","peek","pop","empty"] [[],[1],[2],[],[],[]]
Output: [null,null,null,1,1,false]
Explanation: MyQueue myQueue = new MyQueue(); myQueue.push(1); // queue is: [1] myQueue.push(2); // queue is: [1, 2] myQueue.peek(); // return 1 myQueue.pop(); // return 1, queue is: [2] myQueue.empty(); // return false

Constraints

  • 1 <= x <= 9
  • At most 100 calls will be made to push, pop, peek, and empty
  • All calls to pop and peek are valid (i.e., the queue is non-empty when called)
  • Expected time complexity: O(1) amortized
Code
Ctrl+EnterRun|Ctrl+⇧+EnterSubmit
Output

Run your code to see results

Use Cmd+Enter to run