< Back




933. Number of Recent Calls

We're asked to implement a class that return the number of recent pings within the last 3000ms.
Whenever we receive a ping, we're provided with the current time. We maintain a queue and enqueue the
ping we received with the time we received it. Immediately after, we dequeue all pings at the end of
the queue that are older than t - 3000.

The solution is as follows:


  class RecentCounter:

      def __init__(self):
          self.queue = []

      def ping(self, t: int) -> int:
          self.queue.append(t)

          while self.queue[0] < t - 3000:
              self.queue.pop(0)

          return len(self.queue)


_ Time Complexity:

  O(1) - The while loop will run at most 3000 times.

_ Space Complexity:

  O(1) - The maximal size of our queue is 3000, which is a constant.