Queue· 15 min

Number of Recent Calls

LeetCode #933 · Easy · Interactive step-by-step visualization

Setup

Example inputping(1), ping(100), ping(3001), ping(3002)
Step 1 / 16

Current step

1 / 16

Hold requests in a queue. Pings arrive in increasing time order, so the oldest request is always at the front. Only requests inside the 3000 ms window need to be counted.

Step log

ping(t) calls

1
0
100
1
3001
2
3002
3

requests within the last 3000 ms

front · exitemptyrear · enter

window

[t - 3000, t]

Named pointer
Active node
Committed or completed
Detached or removed
number-of-recent-calls.java
1class RecentCounter {
2 private final Deque<Integer> requests = new ArrayDeque<>();
3
4 public int ping(int t) {
5 requests.addLast(t);
6 while (requests.peekFirst() < t - 3000)
7 requests.pollFirst();
8 return requests.size();
9 }
10}
● Java
Time
O(1) amortized
Space
O(n)
Pattern
queue
Frames
16