Implement Stack using Queues

EasyStackDesignQueue

Solution

export class MyStack {
  private readonly queue: number[];
 
  constructor() {
    this.queue = [];
  }
 
  push(x: number): void {
    this.queue.push(x);
    for (let i = 0; i < this.queue.length - 1; i++) {
      const peek = this.queue.shift();
      if (peek !== undefined) {
        this.queue.push(peek);
      }
    }
  }
 
  pop(): number | undefined {
    return this.queue.shift();
  }
 
  top(): number | undefined {
    return this.queue[0];
  }
 
  empty(): boolean {
    return this.queue.length === 0;
  }
}