Skip to content

算法与数据结构总览


第1阶段 基础数据结构 → 数组、链表、栈、队列
第2阶段 树与图 → 二叉树、遍历、图算法
第3阶段 基础算法 → 排序、二分、递归
第4阶段 高级算法 → 动态规划、回溯、分治
第5阶段 面试实战 → 手撕代码、系统设计
算法与数据结构
┌─────────┬───────────┼───────────┬─────────┐
▼ ▼ ▼ ▼ ▼
数组链表 二叉树 排序算法 动态规划 手撕代码
│ │ │ │ │
• 双指针 • 遍历 • 快速排序 • 状态定义 • LRU缓存
• 快慢指针 • 重建 • 归并排序 • 转移方程 • 线程池
• 环形检测 • 最近祖先 • 堆排序 • 背包问题 • 限流器
• 区间合并 • BST • Top K • 编辑距离 • ID生成
题型考察频率难度核心能力
双指针/滑动窗口★★★★★边界处理
二叉树遍历★★★★★递归思维
动态规划★★★★★抽象建模
回溯算法★★★★☆状态枚举
排序与二分★★★★☆有序思维
图论算法★★★☆☆拓扑思维

复杂度名称典型场景
O(1)常数时间数组按索引访问、哈希表查找
O(log n)对数时间二分查找、平衡二叉搜索树
O(n)线性时间遍历数组/链表、线性搜索
O(n log n)线性对数时间快速排序、归并排序、堆排序
O(n²)平方时间冒泡排序、双重循环、矩阵乘法
O(2ⁿ)指数时间递归穷举、子集枚举
O(n!)阶乘时间全排列、TSP问题

📊 数组与链表

数组遍历;链表反转;双指针;快慢指针;环形链表检测。

🌲 二叉树

遍历方式;重建二叉树;最近公共祖先;二叉搜索树;层序遍历。

🔢 排序算法

快速排序;归并排序;堆排序;Top K 问题;二分查找。

🧮 动态规划

斐波那契;最长子序列;背包问题;编辑距离;打家劫舍。

💻 手撕代码

LRU 缓存;阻塞队列;生产者消费者;线程池;分布式 ID。


第1天 数组与链表 → 双指针、快慢指针
第2天 二叉树 → 遍历、重建、递归
第3天 排序算法 → 手写快排、归并
第4天 动态规划 → 状态定义、转移方程
第5天 手撕代码 → LRU、线程池、限流

技巧适用场景关键点
双指针有序数组、链表边界条件、指针移动
快慢指针环形检测、中点查找速度差异、相遇条件
滑动窗口子串问题、连续子数组窗口大小、收缩时机
二分查找有序数据搜索边界处理、循环条件
递归树遍历、分治终止条件、返回值
动态规划最优子结构状态定义、转移方程