当前位置:首页python > 正文

双端队列(Deque)

作者:野牛程序员:2025-12-22 11:36:29python阅读 2100
双端队列(Deque)
# /*
# 双端队列(Deque)
# --------------------------------------------------------
# 概念:
# 双端队列允许在 队头 和 队尾 同时进行插入与删除。
# 比普通队列更灵活,常用于:
# 1) 滑动窗口算法
# 2) 最近使用记录(LRU)
# 3) 任务调度
# 4) 数据两端频繁操作的场景
#
# Python 内置 collections.deque,效率远高于 list。
# */

from collections import deque

# 创建一个双端队列
dq = deque()

print("双端队列:头尾均可操作")
print("-" * 40)

# -----------------------------------
# 基本操作:右端入队 append()
dq.append(10)
dq.append(20)
dq.append(30)
print("右端入队 10, 20, 30 →", dq)

# 基本操作:左端入队 appendleft()
dq.appendleft(5)
dq.appendleft(2)
print("左端入队 5, 2 →", dq)

# -----------------------------------
# 删除操作:右端删除 pop()
item = dq.pop()
print("右端出队 →", item, "当前队列:", dq)

# 删除操作:左端删除 popleft()
item = dq.popleft()
print("左端出队 →", item, "当前队列:", dq)

# -----------------------------------
# 查看两端元素
print("队头元素:", dq[0])
print("队尾元素:", dq[-1])

# -----------------------------------
# 判断是否为空
print("是否为空:", len(dq) == 0)

# -----------------------------------
# 要点总结:
# 1) 双端队列支持两端插入与删除;
# 2) 常用方法:
#    - append()      → 右端入队
#    - appendleft()  → 左端入队
#    - pop()         → 右端出队
#    - popleft()     → 左端出队
# 3) collections.deque 采用双向链表结构,效率极高;
# 4) 适用于滑动窗口、LRU缓存、数据两端频繁操作;
# 5) 操作复杂度均为 O(1),优于 list 的头部操作。
# */

#
# 双端队列:头尾均可操作
# ----------------------------------------
# 右端入队 10, 20, 30 → deque([10, 20, 30])
# 左端入队 5, 2 → deque([2, 5, 10, 20, 30])
# 右端出队 → 30 当前队列: deque([2, 5, 10, 20])
# 左端出队 → 2 当前队列: deque([5, 10, 20])
# 队头元素: 5
# 队尾元素: 20
# 是否为空: False


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 双端队列(Deque)
  • 相关推荐

    最新推荐

    热门点击