# LeetCode: 933. 最近的请求次数¶

## 1、题目描述¶

输入：inputs = ["RecentCounter","ping","ping","ping","ping"],
inputs = [[],[1],[100],[3001],[3002]]



• 每个测试用例最多调用 10000ping

• 每个测试用例会使用严格递增的 t 值来调用 ping

• 每次调用 ping 都有 $1 <= t <= 10^9$ 。

## 2、解题思路¶

class RecentCounter:
def __init__(self):
self.buff = []

def ping(self, t: int) -> int:
self.buff.append(t)
start_time = t - 3000 if t >= 3000 else 0
pos = 0
for index, i in enumerate(self.buff):
if i < start_time:
continue
else:
pos = index
break
self.buff = self.buff[pos:]
return len(self.buff)

# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)

from collections import deque

class RecentCounter:

def __init__(self):
self.buff = deque(maxlen=10000)

def ping(self, t: int) -> int:

self.buff.append(t)
start_time = t - 3000 if t >= 3000 else 0
while self.buff[0] < start_time:
self.buff.popleft()
return len(self.buff)

# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)