Number of Recent Calls

EasyDesignQueueData Stream

Solution

export class RecentCounter {
  private readonly queue: number[];
 
  constructor() {
    this.queue = [];
  }
 
  shiftUntilPastTime(t: number): void {
    while (0 < this.queue.length && this.queue[0] < t - 3000) {
      this.queue.shift();
    }
  }
 
  ping(t: number): number {
    this.queue.push(t);
    this.shiftUntilPastTime(t);
    return this.queue.length;
  }
}