[
design
queue
]
Leetcode 0362. Design Hit Counter
Problem statement
https://leetcode.com/problems/design-hit-counter/
Solution
We can keep our hits in queue, and remove outdated elements when needed.
Complexity
Complexity of hit
is O(1), amortized time complexity of getHits
is O(1) as well, because each element we put and remove from queue only once. Space complexit is O(300): at any moment there can be no more than 300 elements in queue.
Code
class HitCounter:
def __init__(self):
self.queue = deque()
def hit(self, timestamp):
self.queue.append(timestamp)
def getHits(self, timestamp):
while self.queue and self.queue[0] <= timestamp - 300:
self.queue.popleft()
return len(self.queue)