Number of Recent Calls — Sliding Window Queue
Advertisement
Problem 258 · Number of Recent Calls
Difficulty: Easy · Pattern: Sliding Queue
Solutions
# Python
from collections import deque
class RecentCounter:
def __init__(self): self.q = deque()
def ping(self, t):
self.q.append(t)
while self.q[0] < t - 3000: self.q.popleft()
return len(self.q)
// Java
class RecentCounter {
Queue<Integer> q = new LinkedList<>();
public int ping(int t) {
q.offer(t);
while (q.peek() < t-3000) q.poll();
return q.size();
}
}
Complexity
- Time: O(1) amortized (each ping enters and leaves queue at most once)
- Space: O(3000) = O(1)
Advertisement