今日题目
933.最近的请求次数【难度:简单】
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请你实现 RecentCounter 类:
- RecentCounter() 初始化计数器,请求数为 0 。
- int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。
保证 每次对 ping 的调用都使用比之前更大的 t 值。
例如
输入:
[“RecentCounter”, “ping”, “ping”, “ping”, “ping”]
[[], [1], [100], [3001], [3002]]
输出:
[null, 1, 2, 3, 3]
题目解读
输入数据:
多次调用ping函数,并传入时间t
已知条件:
t呈递增趋势
题目要求:
每次调用ping函数,返回[t-3000,t]时间内ping的调用次数
算法思想
使用队列数据结构
构造一个队列q,将每次传入的t入队,若队头元素小于 t-3000 , 将队头元素出队。
此时队列长度即为满足要求的ping函数调用次数。
代码实现
class RecentCounter:
def __init__(self):
self.q = deque()
def ping(self, t: int) -> int:
self.q.append(t)
while self.q[0] < t - 3000:
self.q.popleft()
return len(self.q)
如果要在我们自己的编辑器里实现,则要完善一下引包以及main函数的实现