【发布时间】:2019-05-20 18:38:30
【问题描述】:
我刚刚在 Leetcode 上解决了“最近通话次数”问题。我读到它希望我返回 ping 的数量,但不知道如何去做。
说明在这里:
编写一个RecentCounter 类来统计最近的请求。
它只有一种方法:ping(int t),其中 t 表示某个时间,以毫秒为单位。
返回从 3000 毫秒前到现在的 ping 次数。
任何时间在 [t - 3000, t] 内的 ping 都会计算在内,包括当前的 ping。
保证每次调用 ping 都使用比以前严格更大的 t 值。
我了解到您必须立即知道您需要使用队列。我不知道,只是想知道是否有人可以解释为什么你需要使用队列来解决这个问题。这是一种解决方案。
import collections
class recentCounter:
def __init__(self):
self.p = collections.deque()
def ping(self, t: int):
self.p.append(t)
while self.p[0] < t - 3000:
self.p.popleft()
return len(self.p)
【问题讨论】:
-
你没有必须使用
deque,但是deque有一个恒定时间popleft操作,这比等效的@987654325更有效@ 这将是list对象上的线性时间
标签: python python-3.x queue python-3.6