leetcode-933 Python解决

2021-04-11  本文已影响0人  何几时

解法一:尝试用 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)

👌:搞定!

上一篇 下一篇

猜你喜欢

热点阅读