数据结构与算法

本知识库系统整理了算法竞赛(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、并查集应用、线段树技巧

学习建议

  1. 入门阶段:从算法基础和基础数据结构开始,掌握复杂度分析、排序、二分等核心概念
  2. 进阶阶段:学习搜索和动态规划,这是解决大部分算法问题的核心方法
  3. 提高阶段:深入图论、字符串和高级数据结构
  4. 竞赛阶段:学习数学、计算几何和各种优化技巧

推荐资源