Community

Start a Thread


Notifications
Subscribe You’re not receiving notifications from this thread.

Two Stack Queue (Main Thread)

Here is the interview question prompt, presented for reference.

Building a Queue with Two Stacks: A Challenge in Engineering Elegance

The Objective: Queue with Stacks

In this challenge, your task is to implement a queue using two stacks. While many programming languages offer queues through arrays or lists, we're restricting our approach to only utilize stacks.

The end result should behave like this:

const tsq = new TwoStackQueue();
tsq.push(1);
tsq.push(2);
tsq.pop();  // Should return 1
tsq.pop();  // Should return 2

The Blueprint: Visualizing the Mechanics

Imagine having two stacks that work in harmony to simulate a queue. These stacks are like two components of a complex machine, each with its own specific role.

![Two Stack Queue](https://storage.googleapis.com/algodailyrandomassets/challenges/two-stack-queue-enqueue.png)

Constraints and Expectations

Let's clarify the rules of the game:

  • Number of Operations: The maximum number of operations won't exceed 100,000.
  • Value Ranges: The elements you push onto the stack will range between -1,000,000,000 and 1,000,000,000.
  • Time Complexity for Push: If the pop operation has a time complexity of O(n), then the push operation should be O(1). Otherwise, the time complexity for push should be O(n).
  • Time Complexity for Pop: If the push operation has a time complexity of O(n), then the pop operation should be O(1). Otherwise, it should be O(n).
  • Space Complexity: Expected to be O(n).

You can see the full challenge with visuals at this link.

Challenges • Asked over 6 years ago by Jake from AlgoDaily

Jake from AlgoDaily Commented on Nov 30, 2017:

This is the main discussion thread generated for Two Stack Queue.

Aishwarya Das Commented on Apr 01, 2021:

Test case 3 is wrong

Jake from AlgoDaily Commented on Apr 01, 2021:

Hi Aishwarya,

For which language?

Aishwarya Das Commented on Apr 01, 2021:

For python

Aishwarya Das Commented on Apr 02, 2021:

According to test 3
tsq = TwoStackQueue(); tsq.push(1); tsq.push(2); tsq.pop(); tsq.push(3); tsq.pop(); assert tsq.pop() == 1

tsq should pop 1 but it pop 3 since the operation order is push,push,pop,push,pop,pop