队列:
先入先出
- 单端队列:只有一个口可以进,一个口可以出
- 双端队列:两个口都可以进,两个口都可以出
时间复杂度
- 访问Access — O(N)
- 搜索Search — O(N)
- 插入Insert — O(1)
- 删除Delete — O(1)
常用操作
-
创建队列
queue = deque()
函数创建为双端队列
– -
添加元素
queue.append()
(添加的元素)
O(1)
– -
获取即将出队的元素
temp1 = queue[0]
– -
删除即将出队的元素
temp2 = queue.popleft()
– -
判断队列是否为空-队列长度
len(queue) == 0
O(1)
– -
遍历队列 — 边删除边遍历队列操作
while len(queue) != 0:
temp = queue.popleft()
print(temp)
O(N)
练习题
- 933 . 最近的请求次数
class RecentCounter:
# Queue
# N is the count of t
# Time Complexity: O(N)
# Space Complexity: O(N)
def __init__(self):
self.q = deque()
def ping(self, t: int) -> int:
self.q.append(t)
while len(self.q)>0 and t - self.q[0]>3000
self.q.popleft()
return len(self.q)
学习视频来源B站—爱学习的饲养员—手把手带你刷Leetcode力扣