Data Structures19 sections · 729 units
Open in Course

Recent Calls - Implementation

Complete solution

Here's the solution:

class RecentCounter
    queue := empty queue

    function ping(t)
        enqueue t

        // Remove timestamps outside the window
        while front of queue < t - 3000
            dequeue

        return size of queue

Each timestamp is enqueued once and dequeued at most once. If there are nn calls to ping, total time is O(n)O(n). Amortized O(1)O(1) per call.