Я только что поработал над проблемой «Количество последних вызовов» в Leetcode. Я читал, что хотел, чтобы я возвратил количество пингов, но понятия не имел, как это сделать.
Описание здесь:
Напишите класс RecentCounter для подсчета последних запросов.
У него есть только один метод: ping (int t), где t представляет некоторое время в миллисекундах.
Возвращает количество пингов, которые были сделаны за 3000 миллисекунд назад до сих пор.
Будет учитываться любой пинг со временем в [t - 3000, t], включая текущий пинг.
Гарантируется, что каждый вызов 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)