数据结构与算法
本知识库系统整理了算法竞赛(OI/ACM)及编程面试中常见的数据结构与算法知识,内容主要参考自 OI Wiki。
知识体系概览
mindmap root((数据结构与算法)) 算法基础 复杂度分析 枚举与模拟 递归与分治 贪心算法 排序算法 二分与倍增 数据结构 线性结构 树形结构 高级数据结构 搜索 DFS/BFS 启发式搜索 回溯与剪枝 动态规划 基础DP 背包问题 区间/树形DP 状压/数位DP DP优化 字符串 字符串匹配 自动机 后缀结构 图论 图的遍历 最短路 生成树 网络流 计算几何 数学 数论 组合数学 线性代数
模块导航
| 模块 | 说明 | 核心内容 |
|---|---|---|
| 01.算法基础 | 算法入门基础 | 复杂度、排序、二分、贪心 |
| 02.数据结构 | 常用数据结构 | 栈、队列、树、并查集、线段树 |
| 03.搜索 | 搜索算法 | DFS、BFS、启发式搜索、回溯 |
| 04.动态规划 | 动态规划专题 | 背包、区间DP、树形DP、优化技巧 |
| 05.字符串 | 字符串处理 | KMP、Trie、AC自动机、后缀数组 |
| 06.图论 | 图论算法 | 最短路、生成树、网络流、匹配 |
| 07.计算几何 | 几何算法 | 凸包、扫描线、半平面交 |
| 08.数学 | 数学基础 | 数论、组合、线性代数、博弈论 |
| 09.杂项 | 其他技巧 | 离散化、莫队、分数规划 |
| 10.专题 | 综合专题 | RMQ、并查集应用、线段树技巧 |
学习建议
- 入门阶段:从算法基础和基础数据结构开始,掌握复杂度分析、排序、二分等核心概念
- 进阶阶段:学习搜索和动态规划,这是解决大部分算法问题的核心方法
- 提高阶段:深入图论、字符串和高级数据结构
- 竞赛阶段:学习数学、计算几何和各种优化技巧
推荐资源
- OI Wiki - 本知识库的主要参考来源
- Hello 算法 - 图解算法入门教程
- 力扣 LeetCode - 算法练习平台