解法一:尝试用 list
如果是以列表来实现的话,会出现以下的结果
class RecentCounter:
def __init__(self):
self.q = []
def ping(self, t: int) -> int:
if len(self.q) > 0:
head = self.q[-1]
if (t - head) > 3000:
self.q.remove(index=-1)
self.q.append(t)
return len(self.q)
image.png
🎍:为何有删除元素的操作,但是列表的元素数量却没有减少呢,是不是涉及底层的东西?
解法二:用 collections.deque()
class RecentCounter:
def __init__(self):
self.q = collections.deque()
def ping(self, t: int) -> int:
while len(self.q) > 0 and (t - self.q[0]) > 3000:
self.q.popleft()
self.q.append(t)
return len(self.q)
👌:搞定!
网友评论