Skip to content

Python 数据结构与算法核心教程目录

第1章 算法基础与复杂度分析

1.1 什么是算法:定义、五大特性与正确性 1.2 时间复杂度:基本操作计数与大 O 表示法 1.3 常见复杂度阶:O(1)、O(log n)、O(n)、O(n log n)、O(n²) 1.4 空间复杂度:辅助空间与原地算法

第2章 数组与字符串

2.1 数组的内存连续性与随机访问 2.2 双指针技巧:快慢指针、左右指针 2.3 滑动窗口:固定长度与可变长度窗口 2.4 字符串不可变性与原地修改策略

第3章 链表

3.1 单链表结构定义与节点操作 3.2 虚拟头节点简化边界处理 3.3 链表反转:迭代与递归实现 3.4 快慢指针应用:判环、找中点、找环入口

第4章 栈与队列

4.1 栈的 LIFO 特性与 list 实现 4.2 队列的 FIFO 特性与 collections.deque 实现 4.3 单调栈:维护递增/递减序列 4.4 循环队列与双端队列(deque)

第5章 哈希表

5.1 哈希函数设计与冲突处理 5.2 开放寻址 vs 链地址法 5.3 Python dict 的哈希表实现原理 5.4 哈希表在去重、计数、查找中的应用

第6章 树与二叉树

6.1 树的基本术语:度、深度、高度、路径 6.2 二叉树的链式存储与数组存储 6.3 四种遍历方式:前序、中序、后序、层序 6.4 递归与迭代遍历的等价转换

第7章 二叉搜索树(BST)

7.1 BST 性质:左小右大与中序有序 7.2 查找、插入、删除操作实现 7.3 平衡性问题与退化为链表的风险 7.4 验证 BST:中序遍历 or 递归范围检查

第8章 堆与优先队列

8.1 堆的完全二叉树结构与堆序性质 8.2 最小堆与最大堆的数组表示 8.3 上浮(sift-up)与下沉(sift-down)操作 8.4 堆在 Top-K 与合并 K 个有序列表中的应用

第9章 图

9.1 图的定义:顶点、边、有向/无向、权重 9.2 邻接表 vs 邻接矩阵存储 9.3 深度优先搜索(DFS):递归与显式栈 9.4 广度优先搜索(BFS):队列实现与最短路径

第10章 排序算法

10.1 冒泡排序、选择排序、插入排序 10.2 快速排序:分区(partition)与递归 10.3 归并排序:分治与稳定排序 10.4 堆排序:建堆 + 重复取顶

第11章 查找算法

11.1 顺序查找与哨兵优化 11.2 二分查找:循环不变式与边界控制 11.3 二分答案:在解空间中搜索 11.4 旋转有序数组中的查找

第12章 递归与分治

12.1 递归三要素:基线条件、递归关系、返回值 12.2 分治思想:分解 → 解决 → 合并 12.3 典型问题:最大子数组和、最近点对(概念) 12.4 尾递归与 Python 递归深度限制

第13章 动态规划

13.1 动态规划核心:状态定义 + 状态转移方程 13.2 斐波那契数列与爬楼梯(一维 DP) 13.3 0-1 背包问题与空间优化(滚动数组) 13.4 最长公共子序列(LCS)与编辑距离(二维 DP)

第14章 贪心算法

14.1 贪心策略:局部最优 → 全局最优 14.2 活动选择问题与区间调度 14.3 分发饼干、跳跃游戏等典型场景 14.4 贪心正确性证明思路简介