题目难度: 简单
原题链接
今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复
剑指offer2
就能看到该系列当前连载的所有文章了, 记得关注哦~
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请实现 RecentCounter 类:
保证 每次对 ping 的调用都使用比之前更大的 t 值。
class RecentCounter:
def __init__(self):
# 初始化一个双端队列
self.q = collections.deque()
def ping(self, t: int) -> int:
# 将当前元素加入队尾
self.q.append(t)
# 这里由于刚入队一个元素, 且其一定不满足循环条件
# 所以可以保证队列至少有一个元素(t), 无需判断q是否为空
while self.q[0] < t - 3000:
# 队头元素不在时间窗口[t-3000,t]内了, 将其出队
self.q.popleft()
# 最终队列剩余的元素个数即为时间窗口内的总请求数
return len(self.q)
大家可以在下面这些地方找到我~
我的 GitHub
我的 Leetcode
我的 CSDN
我的知乎专栏
我的头条号
我的牛客网博客
我的公众号: 算法精选, 欢迎大家扫码关注~