Implement Stack using Queues - Stack - Easy - LeetCode
💻 coding

Implement Stack using Queues - Stack - Easy - LeetCode

1 min read 297 words
1 min read
ShareWhatsAppPost on X
  • 1The stack is implemented using two queues to simulate stack operations like push, pop, and top.
  • 2Only standard queue operations are allowed, including enqueue, dequeue, and checking size or emptiness.
  • 3The time complexity for push is O(n), while pop and top operations have a time complexity of O(1).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The stack is implemented using two queues to simulate stack operations like push, pop, and top."

Implement Stack using Queues - Stack - Easy - LeetCode

Implement the following operations of a stack using queues.

push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. Example:

MyStack stack = new MyStack();

stack.push(1); stack.push(2); stack.top(); // returns 2 stack.pop(); // returns 2 stack.empty(); // returns false Notes:

You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid. Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue. You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

public class MyStack {

 Queue<int> queue1;
 Queue<int> queue2;
 /** Initialize your data structure here. */
 public MyStack() {
 queue1 = new Queue<int>();
 queue2 = new Queue<int>();
 }
 
 /** Push element x onto stack. */
 public void Push(int x) {
 queue2.Enqueue(x);
 while(queue1.Count>0){
 queue2.Enqueue(queue1.Dequeue());
 }
 Queue<int> temp = queue1;
 queue1 = queue2;
 queue2 = temp;
 }
 
 /** Removes the element on top of the stack and returns that element. */
 public int Pop() { 
 if(queue1.Count<1){
 return -1;
 }
 return queue1.Dequeue();
 }
 
 /** Get the top element. */
 public int Top() {
 if(queue1.Count<1){
 return -1;
 }
 return queue1.Peek();
 }
 
 /** Returns whether the stack is empty. */
 public bool Empty() {
 return queue1.Count()<1;
 }
}

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack obj = new MyStack();
 * obj.Push(x);
 * int param_2 = obj.Pop();
 * int param_3 = obj.Top();
 * bool param_4 = obj.Empty();
 */

Time Complexity: O(n)

Space Complexity: O(n)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 3 October 2020 · 1 min read · 297 words

Part of AskGif Blog · coding

You might also like