data-structures-and-algorithms

This repository is going to be for problem solving tasks provided by ASAC team - Java Advanced course

View project on GitHub

Challenge Summary

This challenge asks us to implement a PseudoQueue using 2 Stacks in order to enqueue and dequeue successfully to the queue within FIFO approach.

Whiteboard Process

Pseudo Queue

Approach & Efficiency

For my code I used stack1 to save the data in general and stack2 to reverse the data in when needed. My approach’s time and memory complexity goes as follows:

  • enqueue : time O(1), memory O(1) since we only push an element to stack1.
  • dequeue : time O(n), memory O(n) since we loop over stack1 to reverse it in stack2 to pop the last(becomes the first) element and then reverse it back to stack1.
  • toString : time O(n), memory O(n) since we make a copy of stack1 and reverse that copy in stack2 to print it in the correct order.

    Solution

    To run my code you can use :

  • To initialize a new PseudoQueue :
    PseudoQueue<variableType> pQname = new PseudoQueue<variableType>();
  • To enqueue a new value :
    pQname.enqueue(newValue);
  • To dequeue a value from the PseudoQueue :
    pQname.dequeue();
  • and you can save the enqueued value into a variable.