一、数据结构与算法基础

  1. 核心概念

    • 数据结构:数据的组织、管理和存储格式。
    • 算法:解决问题的步骤与规则。
    • 复杂度分析:时间复杂度和空间复杂度(大O表示法)。
  2. 算法分析

    • 最好/最坏/平均时间复杂度
    • 递归算法复杂度分析(主定理)

二、基本数据结构

  1. 线性结构

    • 数组:静态数组、动态数组(ArrayList)
    • 链表:单向链表、双向链表、循环链表
    • 栈与队列:实现与应用(括号匹配、BFS/DFS)
    • 哈希表:哈希函数、冲突解决(开放寻址、链地址法)
  2. 树形结构

    • 二叉树:二叉搜索树(BST)、平衡二叉树(AVL树、红黑树)
    • :大顶堆、小顶堆(优先队列、堆排序)
    • 多叉树:B树、B+树(数据库索引)
    • 字典树(Trie):字符串快速检索
  3. 图结构

    • 图的表示:邻接矩阵、邻接表
    • 图的遍历:DFS、BFS
    • 最短路径:Dijkstra算法、Floyd-Warshall算法
    • 最小生成树:Prim算法、Kruskal算法

三、经典算法分类

  1. 排序算法

    • 比较排序:快速排序、归并排序、堆排序
    • 非比较排序:计数排序、基数排序、桶排序
    • 稳定性与适用场景分析
  2. 搜索算法

    • 二分查找(有序数组)
    • 深度优先搜索(DFS)与回溯法(N皇后、组合问题)
    • 广度优先搜索(BFS)与最短路径(迷宫问题)
  3. 动态规划(DP)

    • 基本思想:最优子结构、重叠子问题
    • 经典问题:背包问题、最长公共子序列(LCS)、编辑距离
    • 状态转移方程设计与优化(空间压缩)
  4. 贪心算法

    • 适用场景:活动选择、霍夫曼编码、最小生成树
    • 与动态规划的对比
  5. 分治算法

    • 典型应用:归并排序、快速排序、大整数乘法
    • 递归与分治策略
  6. 字符串算法

    • 模式匹配:KMP算法、Boyer-Moore算法
    • 字符串哈希与滑动窗口(最长无重复子串)

四、高级数据结构与算法

  1. 高级数据结构

    • 并查集(Disjoint Set):路径压缩与按秩合并
    • 跳表(Skip List):有序链表的优化查询
    • 线段树与树状数组:区间查询与更新
  2. 高级算法

    • 图算法:拓扑排序、强连通分量(Tarjan算法)
    • 位运算技巧:快速幂、状态压缩
    • 数学相关:素数筛法、快速傅里叶变换(FFT)

五、算法设计技巧

  1. 双指针技巧

    • 快慢指针(链表环检测)
    • 左右指针(两数之和、接雨水问题)
  2. 滑动窗口

    • 固定窗口(最大连续子数组和)
    • 可变窗口(最小覆盖子串)
  3. 前缀和与差分

    • 区间求和优化(一维/二维前缀和)
    • 差分数组(区间批量增减)

六、应用场景与实战

  1. 常见应用场景

    • 数据库索引(B+树、哈希索引)
    • 缓存淘汰策略(LRU/LFU算法)
    • 网络路由(Dijkstra算法)
    • 压缩算法(霍夫曼编码)
  2. 面试高频题目

    • 链表:反转链表、环形链表检测
    • 二叉树:遍历(前序/中序/后序)、最近公共祖先(LCA)
    • 动态规划:爬楼梯、股票买卖问题

七、学习资源与工具

  1. 经典书籍

    • 《算法导论》(CLRS)
    • 《算法(第4版)》(Sedgewick)
    • 《剑指Offer》《程序员面试金典》
  2. 在线平台

    • LeetCode、牛客网(算法题库)
    • Visualgo(算法可视化)
    • GeeksforGeeks(算法解析与实现)
  3. 实践建议

    • 按分类刷题(如数组→链表→二叉树→动态规划)
    • 参与编程竞赛(Codeforces、AtCoder)
    • 手写代码实现核心数据结构(如红黑树、LRU缓存)

八、扩展方向

  1. 高级主题

    • 并发数据结构:无锁队列、CAS操作
    • 近似算法:NP难问题的近似解
    • 机器学习中的算法:梯度下降、聚类算法(K-Means)
  2. 领域结合

    • 分布式算法:Paxos、Raft一致性协议
    • 计算几何:凸包、最近点对问题

通过此知识体系,可系统掌握数据结构和算法的核心内容,建议结合理论+实践+刷题,逐步提升问题分析与解决能力。