算法与数据结构
通用算法与数据结构知识库(刷题向),面向求职面试与算法入门,正文统一用 Python 伪代码示意,复杂度一律用表格给出。
定位
- 本系列讲的是脱离具体语言、可迁移到任何面试场景的通用算法知识:复杂度分析、数据结构选型、树与图、排序与查找、动态规划与回溯、高频套路。
- 定位是「面试 + 刷题」:每篇正文按「识别特征 → 思路 → 模板伪代码 → 复杂度表 → 代表题」组织,可直接对着力扣(LeetCode)、牛客刷题使用。
- 分工说明:本系列只讲算法本身,不绑定语言框架;Java 集合类、并发、JVM 等见后端 Java 笔记。
使用建议(刷题向)
- 先读 复杂度分析:没有复杂度概念,无法判断一个解法「能不能过数据规模」。
- 再读 常用数据结构:熟练数组/链表/栈/队列/哈希表/堆的原理、API 与复杂度。
- 分专题推进:树与图 → 排序与查找 → 动态规划与回溯 → 高频算法题套路。
- 刷题时:先看 高频算法题套路 的「识别特征」命中题型,再套模板,最后去力扣/牛客验证。
- 复盘时:把每道错题归类到对应套路下,逐步形成自己的「题感清单」。
- 要练手写实现:手写题清单 的 12 段关掉编辑器敲一遍;临场发挥看 面试手撕现场。
目录覆盖表
| 文件 | 覆盖内容 | 优先级 |
|---|---|---|
| 复杂度分析 | 大 O、时间/空间复杂度、主定理简介、最好/最坏/平均/均摊、易错点 | ★★★ 最先读 |
| 常用数据结构 | 数组/链表/栈/队列/哈希表/堆:原理、复杂度表、API、典型坑 | ★★★ |
| 树与图 | 二叉树四种遍历、BST、平衡树、堆;图遍历、拓扑排序、Dijkstra、并查集 | ★★★ |
| 排序与查找 | 八大排序思路与对比总表、TopK、二分查找变体、外排序 | ★★★ |
| 动态规划与回溯 | DP 五步法、四大经典题拆解、记忆化搜索、回溯框架与剪枝 | ★★☆ |
| 高频算法题套路 | 双指针、滑动窗口、前缀和/差分、单调栈、BFS/DFS 模板、位运算、TopK | ★★★ 常翻 |
| 手写题清单 | 单例、生产者消费者、LRU、线程池、快排、二分、TopK、反转链表等 12 段模板 | ★★★ 面试前必过 |
| LeetCode 分类题解 | 10 类套路的识别特征 + 模板 + 每类 5 道代表题 | ★★★ 刷题用 |
| 面试手撕现场 | 读题确认、说思路、白板写法、卡住怎么办、边界自查、常见追问 | ★★☆ 临场前看 |
刷题路线一句话
先会「遍历与暴力」(数组、链表、树、BFS/DFS),再会「有序加速」(二分、排序、堆),最后攻克「状态与决策」(DP、回溯)——分组路线详见高频算法题套路 最后一节。
Cao Note