跳转至

第 1 章   数据结构

每种结构记三件事:能做什么、操作多快、Python 怎么写。

结构 擅长 关键操作复杂度 Python
数组 / 列表 按下标访问 访问 O(1),中间插入 O(n) list
哈希表 查“见没见过” 查找 / 插入 O(1) dict、set
栈 后进先出,括号、撤销 压入 / 弹出 O(1) list.append / pop
队列 先进先出,BFS 入队 / 出队 O(1) collections.deque
堆 随时取最小 / 最大 取顶 O(1),插入 / 弹出 O(log n) heapq
链表 频繁插入删除 插入 O(1),查找 O(n) 自定义 ListNode
二叉树 层级、递归结构 平衡时 O(log n) 自定义 TreeNode
图 关系、路径 遍历 O(V + E) 邻接表 dict[list]

学习顺序

数组 / 哈希表 → 栈 / 队列 → 链表 → 二叉树(递归是关键)→ 堆 → 图