一.队列数据结构的封装
队列类。队列(queue)是具有先进先出(FIFO)特性的数据结构。一个队 列就像是一行队伍,数据从前端被移除,从后端被加入。这个类必须支持 下面几种方法:
并实现下面的功能:
class Queue: def __init__(self): self._queue = [] def __len__(self): print(len(self._queue)) return len(self._queue) def is_empty(self): print(len(self._queue) == 0) return len(self._queue) == 0 def enqueue(self,item): self._queue.append(item) # print("元素[%s]入栈成功" % (item)) def dequeue(self): if len(self._queue) != 0: print(self._queue.pop(0)) #return self._queue.pop() else: print('error') def first(self): print(self._queue[0]) return self._queue[0] queue = Queue() queue.enqueue(5) queue.enqueue(3) queue.__len__() queue.dequeue() queue.is_empty() queue.dequeue() queue.is_empty() queue.dequeue() queue.enqueue(7) queue.enqueue(9) queue.first() queue.enqueue(4) queue.__len__() queue.dequeue()
2.最近请求次数(Leetcode)
写一个 RecentCounter 类来计算最近的请求。
它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。
返回从 3000 毫秒前到现在的 ping 数。
任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。
保证每次对 ping 的调用都使用比之前更大的 t 值。
class RecentCounter: def __init__(self): self.latest = [] # 记录三秒之内的ping时刻 def ping(self, t: int) -> int: self.latest.append(t) # 添加记录 while self.latest and t - self.latest[0] > 3000: self.latest.pop(0) # 移除3秒之前的数据 return len(self.latest)
文章来源: https://blog.csdn.net/qq_40102768/article/details/91458256