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.