Python最近的通话次数
假设我们要编写一个名为LatestCounter的类来计算最近的请求。此类只有一个方法:ping(t),其中t表示某个时间(以毫秒为单位)。这将返回从3000毫秒前到现在的ping次数。时间[t-3000,t]中的任何ping都将计数,包括当前ping。并且可以保证每次对ping的调用都严格使用比以前更大的t值。
因此,如果输入类似于四次调用ping(1),ping(100),ping(3001),ping(3002),则输出将分别为1,2,3,3。
为了解决这个问题,我们将遵循以下步骤-
通过创建一个队列来初始化类,最初它是空的
定义一个功能ping()。这将花费
当队列的大小不为0且t-queue[0]>3000时,执行
从队列中删除第一个元素
在队列末尾插入t
返回队列大小
让我们看下面的实现以更好地理解-
示例
class RecentCounter:
def __init__(self):
self.queue = []
def ping(self, t):
while len(self.queue) and t - self.queue[0] > 3000:
self.queue.pop(0)
self.queue.append(t)
return len(self.queue)
ob = RecentCounter()print(ob.ping(1))
print(ob.ping(100))
print(ob.ping(3001))
print(ob.ping(3002))输入值
ob.ping(1) ob.ping(100) ob.ping(3001) ob.ping(3002)
输出结果
1 2 3 3
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短