数据结构

一、栈

0. 用法

1
2
3
stack = [] # 使用 list 即可, 右侧为栈顶
stack.append(0) # 右侧添加 (入栈)
val = stack.pop() # 右侧弹出 (出栈)

二、队列

0. 用法

1
2
3
4
5
6
7
from collections import deque

queue = deque() # 左侧为队头, 右侧为队尾
queue.append(0) # 右侧添加 (入队)
val = queue.pop() # 右侧弹出
queue.appendleft(0) # 左侧添加
val = queue.popleft() # 左侧弹出 (出队)

三、堆

0. 用法

1
2
3
4
5
6
7
import heapq

heap = [] # heapq 并不提供新数据类型, 只是提供了一组操作函数
heapq.heappush(heap, 0) # 添加
min_val = heapq.heappop(heap) # 弹出
min_val = heap[0] # 堆顶元素 (不弹出)
# 注意: 默认为最小堆, 需要最大堆手动加负号