Number of Recent Calls — Sliding Window Queue

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro