完整学习目录导航¶
📚 现有学习资源¶
🎯 快速开始¶
📖 阶段一:基础准备¶
1. 复杂度分析¶
- 01-复杂度分析 ⭐⭐⭐⭐⭐
- 时间复杂度:O(1), O(log n), O(n), O(n²), O(2ⁿ)
- 空间复杂度
- 复杂度计算技巧
- 10+道练习题
2. 数据结构详解(超详细)¶
2.1 数组(Array)⭐⭐⭐⭐⭐¶
- 02-数组详解 📕 10,000+字
- ✅ 什么是数组(生活例子)
- ✅ 内存结构可视化
- ✅ 10+种操作详解(访问、修改、插入、删除、查找、遍历)
- ✅ Python list完全指南
- ✅ C++ array/vector完全指南
- ✅ 5道经典面试题详解(两数之和、买卖股票、最大子数组和等)
- ✅ 实战应用(数据预处理、滑动窗口、前缀和、矩阵操作)
- ✅ 15+道练习题(基础、中等、困难)
2.2 链表(Linked List)⭐⭐⭐⭐⭐¶
- 03-链表详解 📕 10,000+字
- ✅ 什么是链表(火车比喻)
- ✅ 内存结构可视化
- ✅ 链表类型(单向、双向、循环)
- ✅ 11种操作详解(创建、遍历、查找、插入、删除、反转、合并等)
- ✅ 5道经典面试题详解(判断环、找中点、删除倒数第N个、回文链表等)
- ✅ 链表vs数组对比
- ✅ 10+道练习题(基础、中等、困难)
2.3 栈(Stack)⭐⭐⭐⭐⭐¶
- 04-栈完全详解 📕 15,000+字
- ✅ 什么是栈(一摞盘子比喻)
- ✅ 3种实现方式(Python list、链表、C++ STL)
- ✅ 操作详解(入栈、出栈、查看栈顶,每步都图示)
- ✅ 4大应用详解:括号匹配、逆波兰表达式、最小栈、最长有效括号
- ✅ 3道经典面试题:用栈实现队列、简化路径、删除相邻重复项
2.4 队列(Queue)⭐⭐⭐⭐⭐¶
- 05-队列完全详解 📕 15,000+字
- ✅ 什么是队列(排队买票比喻)
- ✅ 3种实现方式(Python deque、链表、C++ STL)
- ✅ 操作详解(入队、出队,每步都图示)
- ✅ 3大应用详解:二叉树层序遍历、滑动窗口最大值、任务调度器
- ✅ 双端队列、优先队列、循环队列
- ✅ 2道经典面试题:用队列实现栈、设计循环队列
2.5 哈希表(Hash Table)⭐⭐⭐⭐⭐¶
- 06-哈希表完全详解 📕 15,000+字
- ✅ 什么是哈希表(图书馆比喻)
- ✅ 超详细的哈希函数(除法哈希、乘法哈希、字符串哈希)
- ✅ 哈希冲突详解:链地址法、开放寻址法、再哈希
- ✅ Python dict内部实现
- ✅ 3道经典面试题:两数之和、字母异位词分组、最长连续序列
- ✅ 实战应用:LRU缓存、设计推特
2.6 树(Tree)⭐⭐⭐⭐⭐¶
- 07-树完全详解 📕 25,000+字
- ✅ 树的基础概念(组织结构图示)
- ✅ 二叉树详解:满二叉树、完全二叉树、完美二叉树
- ✅ 4种遍历方式(前、中、后、层序),递归+迭代实现
- ✅ 二叉搜索树(BST):性质、插入、查找
- ✅ 平衡树:AVL树(4种旋转)
- ✅ 堆和优先队列:大顶堆、小顶堆
- ✅ 3道经典面试题:二叉树最大深度、翻转二叉树、对称二叉树
📖 阶段二:核心算法¶
1. 排序算法(完整版)⭐⭐⭐⭐⭐¶
- 01-排序算法完全指南 📕 15,000+字
- ✅ 10种排序算法详解:
- 冒泡排序(Bubble Sort)
- 选择排序(Selection Sort)
- 插入排序(Insertion Sort)
- 希尔排序(Shell Sort)
- 归并排序(Merge Sort)
- 快速排序(Quick Sort)
- 堆排序(Heap Sort)
- 计数排序(Counting Sort)
- 桶排序(Bucket Sort)
- 基数排序(Radix Sort)
- ✅ 每种算法包含:原理、Python实现、C++实现、图解、复杂度分析
- ✅ 排序算法选择指南
- ✅ 6道LeetCode题目详解
- ✅ 稳定性分析
- ✅ 实际应用建议
2. 搜索算法 ⭐⭐⭐⭐⭐¶
- 02-搜索算法完全详解 📕 15,000+字 🆕
- ✅ 二分搜索基础:标准二分、lower_bound、upper_bound
- ✅ 二分搜索变种:旋转数组搜索、寻找峰值、查找重复数
- ✅ BFS进阶:双向BFS、多源BFS、0-1 BFS
- ✅ DFS进阶:迭代加深搜索(IDS)、启发式搜索
- ✅ A*算法:原理、启发式函数、路径规划应用
- ✅ LeetCode题目详解(10+题)
3. 动态规划(完全版)⭐⭐⭐⭐⭐¶
- 03-动态规划完全指南 📕 20,000+字(进行中)
- ✅ DP基础概念
- ✅ DP vs 递归 vs 贪心
- ✅ DP解题四步法
- ✅ 20+个经典DP问题:
- 入门(5题):爬楼梯、最小花费爬楼梯、打家劫舍、杨辉三角、...
- 进阶(10题):零钱兑换、单词拆分、最长递增子序列、LCS、编辑距离、不同路径、...
- 困难(5题):目标和、最大正方形、最长有效括号、正则表达式匹配、...
- ✅ 每题包含:问题描述、多种解法、状态转移图、复杂度分析
📖 阶段三:进阶算法¶
1. 图算法 ⭐⭐⭐⭐⭐¶
- 01-图算法完全详解 📕 25,000+字
- ✅ 图的基础概念(社交网络比喻)
- ✅ 图的表示方法(邻接矩阵、邻接表,含详细图解)
- ✅ DFS和BFS遍历(递归+迭代实现)
- ✅ 最短路径算法:
- Dijkstra算法(含优先队列优化)
- Bellman-Ford算法(含负权边处理)
- Floyd-Warshall算法(所有顶点对)
- ✅ 最小生成树(Prim、Kruskal含并查集)
- ✅ 拓扑排序(Kahn算法BFS实现)
- ✅ A*算法(启发式搜索)
- ✅ 2道经典面试题(课程表、网络延迟时间)
- ✅ 完整代码实现和演示
2. 贪心算法 ⭐⭐⭐⭐¶
- 02-贪心算法完全详解 📕 15,000+字
- ✅ 贪心算法核心思想(局部最优→全局最优)
- ✅ 贪心解题四步法
- ✅ 8大经典问题:
- 活动选择问题(按结束时间贪心)
- 区间调度问题(无重叠区间)
- 跳跃游戏I&II(LeetCode 55, 45)
- 霍夫曼编码(数据压缩)
- 分数背包问题(按单价贪心)
- 最优合并问题
- 加油站问题(LeetCode 134)
- 分发糖果(LeetCode 135)
- ✅ LeetCode高频真题:
- 摆动序列(LeetCode 376)
- 单调递增的数字(LeetCode 738)
- 种花问题(LeetCode 605)
- ✅ 贪心vs动态规划对比
- ✅ 何时能用/不能用贪心
3. 字符串算法 ⭐⭐⭐⭐¶
- 03-字符串算法完全详解 📕 20,000+字
- ✅ 字符串基础(内存表示、匹配问题定义)
- ✅ 暴力匹配算法:O(mn),简单直观
- ✅ KMP算法⭐⭐⭐⭐⭐:
- next数组(前缀表)计算详解
- 利用已匹配信息
- 保证O(m+n)时间
- 面试必考!
- ✅ Rabin-Karp算法:滚动哈希,适合多模式匹配
- ✅ Boyer-Moore算法:从右向左匹配,实际应用最快
- ✅ Sunday算法:BM改进,关注窗口后字符
- ✅ 字符串处理技巧:双指针、滑动窗口、前缀和哈希
- ✅ LeetCode高频真题:最长公共前缀、反转字符串、字符串相乘
- ✅ 算法对比总结
4. 回溯算法 ⭐⭐⭐⭐¶
- 04-回溯算法完全详解 📕 15,000+字
📖 阶段四:实战强化¶
1. LeetCode题目详解¶
- LeetCode 100+题详解 📕 已创建(35+题详解)
- ✅ 数组(10题):两数之和、买卖股票、最大子数组和、删除重复项、轮转数组、除自身以外数组的乘积、三数之和、搜索二维矩阵II、合并区间、矩阵置零
- ✅ 链表(5题):反转链表、合并两个有序链表、环形链表、环形链表II、回文链表
- ✅ 树(5题):二叉树的最大深度、验证二叉搜索树、对称二叉树、层序遍历、二叉树展开为链表
- ✅ 动态规划(5题):爬楼梯、打家劫舍、零钱兑换、最长递增子序列、完全平方数
- ✅ 图(3题):课程表、课程表II、被围绕的区域
- ✅ 排序/搜索(7题):合并两个有序数组、第一个错误的版本、搜索插入位置、搜索二维矩阵、查找元素的第一个和最后一个位置、寻找峰值、二分查找专题
- ✅ 每题包含:多种解法、执行过程演示、复杂度分析、代码注释
- ✅ 面试高频题Top 20标注
- ✅ 刷题策略和重复刷题建议
2. 大厂面试专项讲解¶
- 大厂面试专项讲解 📕 已创建(25,000+字)
- ✅ 字节跳动面试真题:
- LRU缓存机制(哈希表+双向链表)
- 四数之和(排序+双指针)
- 接雨水(双指针、DP)
- 最长有效括号(栈)
- 滑动窗口最大值(单调队列)
- ✅ 阿里巴巴面试真题:
- 反转链表II(迭代)
- 二叉树的中序遍历(递归、迭代)
- Pow(x, n)(快速幂)
- 最长公共前缀(垂直扫描)
- 括号生成(回溯)
- ✅ 腾讯面试真题:
- 全排列(回溯、交换法)
- 子集(回溯)
- 组合(回溯+剪枝)
- 单词搜索(DFS+回溯)
- 岛屿数量(DFS)
- ✅ 每题包含:问题描述、多种解法、执行过程演示、复杂度分析
- ✅ 面试技巧与策略(算法流程、沟通技巧、代码风格)
- ✅ 常见陷阱(边界条件、整数溢出、索引越界)
- ✅ 高频考点总结(数据结构、算法)
- ✅ 刷题优先级(必刷题、高频题)
3. AI/ML算法应用¶
- AI/ML中的算法应用 📕 15,000+字 🆕
- 数据预处理中的排序/搜索算法
- 动态规划在序列建模中的应用(Viterbi、编辑距离、LCS)
- 图算法在深度学习中的应用(GNN、MCTS、拓扑排序)
- 优化算法(梯度下降、价值迭代)
- 实战案例:推荐系统、图像处理、NLP
4. 代码优化实战¶
- 代码优化完全指南 📕 15,000+字 🆕
- 代码优化概述与流程
- 性能瓶颈识别工具(cProfile、timeit、memory_profiler)
- 从O(n²)到O(n)的优化案例(两数之和、Kadane算法、LRU缓存)
- 从O(n)到O(log n)的优化案例(二分查找、求平方根)
- 空间换时间策略(斐波那契、爬楼梯、布隆过滤器)
- 实际项目优化案例(大数据去重、日志统计、数据库查询)
5. 系统设计题 ⭐⭐⭐⭐⭐ 🆕¶
- 05-设计模式.md 📕 10,000+字 🆕
- ✅ 缓存设计:
- LRU缓存(哈希表+双向链表)
- LFU缓存(哈希表+频率列表)
- ✅ 数据结构实现:
- 跳表(Skip List)
- ✅ 设计题技巧:
- 面向对象设计原则
- 时间和空间复杂度权衡
- LeetCode高频真题:
- LRU缓存(LeetCode 146)
- LFU缓存(LeetCode 460)
- Python和C++双语言完整实现
🛠️ 代码模板¶
Python模板¶
- Python模板.md ✅ 已创建(1500+行,Markdown格式)
- 25+个算法实现
- 详细注释和复杂度分析
- 包含完整测试代码和使用示例
C++模板¶
- C++模板.md ✅ 已创建(1200+行,Markdown格式)
- 25+个算法实现
- 与Python模板完全同步
- 详细注释和复杂度分析
📊 内容统计(超级详细版)¶
✅ 已完成(总字数:420,000+字)🆕¶
🎯 导航和指南(5个文件)¶
- 内容索引.md - 完整目录导航(本文件)
- 快速入门.md - 5分钟快速上手
- README.md - 学习路线总览
- 学习指南.md - 详细学习指南(含学习方法、技巧)
- 学习进度.md - 进度追踪表(含里程碑)
📖 阶段一:基础准备(7个超级详解)¶
1. 复杂度分析¶
- 01-复杂度分析.md ⭐⭐⭐⭐⭐
- 大O表示法详解
- 时间复杂度:O(1), O(log n), O(n), O(n²), O(2ⁿ)
- 空间复杂度
- 复杂度计算技巧
- 10+道练习题
2. 数组(Array)⭐⭐⭐⭐⭐¶
- 02-数组.md 📕 10,000+字
- 什么是数组(储物柜比喻)
- 内存结构可视化(详细地址图)
- 10+种操作详解(每步都有图示)
- Python list完全指南(15+种操作)
- C++ array/vector完全指南
- 5道经典面试题:
- 两数之和(暴力法、哈希表)
- 买卖股票最佳时机
- 最大子数组和(Kadane算法)
- 删除有序数组重复项
- 轮转数组(三次翻转)
- 实战应用:
- 机器学习数据预处理
- 滑动窗口技术
- 前缀和
- 矩阵操作
- 15+道练习题
3. 链表(Linked List)⭐⭐⭐⭐⭐¶
- 03-链表.md 📕 10,000+字
- 什么是链表(火车车厢比喻)
- 内存结构可视化
- 链表类型(单向、双向、循环)
- 11种操作详解:
- 创建、遍历、查找、插入(头部/尾部/指定位置)
- 删除(头/尾/指定节点)
- 反转链表(迭代、递归)
- 合并两个有序链表
- 5道经典面试题:
- 判断链表是否有环(快慢指针)
- 找链表中点
- 删除倒数第N个节点
- 回文链表
- 环形链表II
- 链表vs数组对比
- 10+道练习题
4. 栈(Stack)⭐⭐⭐⭐⭐¶
- 04-栈.md 📕 15,000+字
- 什么是栈(一摞盘子比喻)
- 3种实现方式:
- Python list(最简单)
- 链表(高效)
- C++ STL stack
- 操作详解(入栈、出栈、查看栈顶,每步都图示)
- 4大应用详解:
- 括号匹配(详细版:每一步都展示)
- 逆波兰表达式(完整过程图解)
- 最小栈(辅助栈实现)
- 最长有效括号
- 3道经典面试题:
- 用栈实现队列
- 简化路径
- 删除相邻重复项
- 实战练习
5. 队列(Queue)⭐⭐⭐⭐⭐¶
- 05-队列.md 📕 15,000+字
- 什么是队列(排队买票比喻)
- 3种实现方式:
- Python deque(推荐)
- 链表
- C++ STL queue
- 操作详解(入队、出队,每步都图示)
- 3大应用详解:
- 二叉树层序遍历(详细版:每一步都展示)
- 滑动窗口最大值(单调队列)
- 任务调度器
- 双端队列(Deque)
- 优先队列(Priority Queue)
- 循环队列
- 2道经典面试题:
- 用队列实现栈
- 设计循环队列
6. 哈希表(Hash Table)⭐⭐⭐⭐⭐¶
- 06-哈希表.md 📕 15,000+字
- 什么是哈希表(图书馆比喻)
- 超详细的哈希函数:
- 除法哈希(含优化)
- 乘法哈希
- 字符串哈希(多项式滚动)
- 哈希冲突详解:
- 冲突可视化
- 3种解决方法:
- 链地址法(完整实现+图解)
- 开放寻址法(线性、二次、双重哈希)
- 再哈希(扩容机制)
- Python dict内部实现
- 操作详解(插入、查找、删除)
- 3道经典面试题:
- 两数之和(含过程演示)
- 字母异位词分组
- 最长连续序列
- 实战应用:
- LRU缓存(详细实现)
- 设计推特(简化版)
7. 树(Tree)⭐⭐⭐⭐⭐¶
- 07-树.md 📕 25,000+字
- 树的基础概念(组织结构图示)
- 二叉树详解:
- 满二叉树、完全二叉树、完美二叉树
- 二叉树实现(TreeNode类)
- 4种遍历方式(前、中、后、层序)
- 每种遍历都有递归+迭代实现
- 可视化打印树结构
- 二叉搜索树(BST):
- BST性质(左<根<右)
- BST可视化
- 插入、查找操作(含过程演示)
- 中序遍历得到有序序列
- 平衡树:
- 为什么需要平衡
- AVL树(含4种旋转:LL、RR、LR、RL)
- 旋转图解
- 堆和优先队列:
- 大顶堆、小顶堆
- 堆的实现(heapq)
- 建堆、入堆、出堆
- 3道经典面试题:
- 二叉树最大深度
- 翻转二叉树
- 对称二叉树
- 实战应用
📖 阶段二:核心算法(3个超详解)¶
8. 排序算法(完全指南)⭐⭐⭐⭐⭐¶
- 01-排序算法.md 📕 15,000+字
- 10种排序算法:
- 冒泡排序(Bubble Sort)- 含优化
- 选择排序(Selection Sort)
- 插入排序(Insertion Sort)- 含二分优化
- 希尔排序(Shell Sort)- 含间隔序列优化
- 归并排序(Merge Sort)- 含原地版
- 快速排序(Quick Sort)- 含3种优化
- 堆排序(Heap Sort)- 含堆化过程
- 计数排序(Counting Sort)
- 桶排序(Bucket Sort)
- 基数排序(Radix Sort)
- 每种算法包含:
- 原理讲解
- Python实现(详细注释)
- C++实现
- 完整排序过程图解
- 时间/空间复杂度分析
- 稳定性分析
- 排序算法对比表
- 排序算法选择指南(决策树)
- 6道LeetCode题目详解
9. 搜索算法 ⭐⭐⭐⭐⭐¶
- 02-搜索算法.md 📕 15,000+字
- ✅ 二分搜索基础:标准二分、lower_bound、upper_bound
- ✅ 二分搜索变种:旋转数组搜索、寻找峰值、查找重复数
- ✅ BFS进阶:双向BFS、多源BFS、0-1 BFS
- ✅ DFS进阶:迭代加深搜索(IDS)、启发式搜索
- ✅ A*算法:原理、启发式函数、路径规划应用
- ✅ LeetCode题目详解(10+题)
10. 动态规划(完全指南)⭐⭐⭐⭐⭐¶
- 03-动态规划.md 📕 20,000+字
- DP基础概念
- DP vs 递归 vs 贪心
- DP解题四步法
- 20+个经典DP问题详解:
- 入门(5题):爬楼梯、最小花费爬楼梯、打家劫舍、杨辉三角
- 进阶(10题):零钱兑换、单词拆分、最长递增子序列、LCS、编辑距离、不同路径
- 困难(5题):目标和、最大正方形、最长有效括号、正则表达式匹配
- 每题包含:
- 问题描述
- 多种解法(递归→记忆化→DP)
- 完整的状态转移图
- 详细的代码注释
- 复杂度分析
📖 阶段三:进阶算法¶
11. 图算法(完全指南)⭐⭐⭐⭐⭐¶
- 01-图算法.md 📕 25,000+字
- 图的基础概念(社交网络比喻)
- 图的表示方法:
- 邻接矩阵(O(V²)空间,稠密图)
- 邻接表(O(V+E)空间,稀疏图)⭐
- Python字典实现(更灵活)
- 图的遍历:
- DFS(深度优先搜索):递归+迭代实现
- BFS(广度优先搜索):分层遍历、最短路径
- 最短路径算法:
- Dijkstra算法:非负权图,O((V+E)log V),含优先队列优化
- Bellman-Ford算法:负权边处理,O(VE),负权环检测
- Floyd-Warshall算法:所有顶点对,O(V³)
- 最小生成树(MST):
- Prim算法:顶点增长,O((V+E)log V),适合稠密图
- Kruskal算法:边增长,O(E log E),含并查集,适合稀疏图
- 拓扑排序:
- Kahn算法(BFS实现)
- 应用:课程安排、任务调度、编译依赖
- A*算法(启发式搜索)
- 2道经典面试题:
- 课程表(拓扑排序)
- 网络延迟时间(Dijkstra)
- 实战应用:城市导航系统
12. 贪心算法(完全指南)⭐⭐⭐⭐⭐¶
- 02-贪心算法.md 📕 15,000+字
- 贪心算法核心思想(局部最优→全局最优)
- 贪心解题四步法
- 8大经典问题:
- 活动选择问题(按结束时间贪心)
- 区间调度问题(无重叠区间,LeetCode 435)
- 跳跃游戏I&II(LeetCode 55, 45)
- 霍夫曼编码(数据压缩)
- 分数背包问题(按单价贪心)
- 最优合并问题
- 加油站问题(LeetCode 134)
- 分发糖果(LeetCode 135)
- LeetCode高频真题:
- 摆动序列(LeetCode 376)
- 单调递增的数字(LeetCode 738)
- 种花问题(LeetCode 605)
- 贪心vs动态规划对比
- 何时能用/不能用贪心
13. 字符串算法(完全指南)⭐⭐⭐⭐⭐¶
- 03-字符串算法.md 📕 20,000+字
- 字符串基础(内存表示、匹配问题定义)
- 暴力匹配算法:O(mn),简单直观
- KMP算法⭐⭐⭐⭐⭐:
- next数组(前缀表)计算详解
- 利用已匹配信息
- 保证O(m+n)时间
- 面试必考!
- Rabin-Karp算法:
- 滚动哈希
- 适合多模式匹配
- 哈希冲突处理
- Boyer-Moore算法:
- 从右向左匹配
- 坏字符规则
- 实际应用最快
- Sunday算法:Boyer-Moore改进,关注窗口后字符
- 字符串处理技巧:
- 双指针(回文检测)
- 滑动窗口(最长无重复子串)
- 前缀和哈希
- LeetCode高频真题:
- 最长公共前缀(LeetCode 14)
- 反转字符串(LeetCode 344)
- 字符串相乘(LeetCode 43)
- 算法对比总结(选择建议)
14. 回溯算法(完全指南)⭐⭐⭐⭐⭐¶
- 04-回溯算法.md 📕 15,000+字
- 回溯算法基础(DFS + 剪枝)
- 回溯 vs 递归 vs DFS
- 全排列问题(LeetCode 46):
- 标准全排列(used数组法)
- 交换法优化
- 包含重复数字的全排列(LeetCode 47)
- 组合问题(LeetCode 77):
- 从n个数选k个组合
- 剪枝优化
- 子集问题(LeetCode 78):
- 所有子集生成
- 回溯树图解
- N皇后问题⭐⭐⭐⭐⭐(LeetCode 51):
- 经典回溯问题
- 约束:行列斜线互不攻击
- 完整递归树图解
- 括号生成(LeetCode 22):
- 合法括号生成
- 卡特兰数
- 分割回文串(LeetCode 131):
- 回文判断
- 分割方案
- LeetCode高频真题:
- 组合总和(LeetCode 39, 40)
- 单词搜索(LeetCode 79)
- 复原IP地址(LeetCode 93)
- 回溯优化技巧:剪枝、排序去重、双向搜索
15. 并查集(Union-Find)⭐⭐⭐⭐⭐ 🆕¶
- 05-并查集.md 📕 8,000+字 🆕
- ✅ 并查集基础概念(社交网络比喻)
- ✅ 基本实现:Quick Find、Quick Union
- 优化策略:
- 按秩合并(Union by Rank)
- 路径压缩(Path Compression)
- 终极版本:两者结合
- 应用场景:
- 连通分量检测(省份数量)
- 最小生成树(Kruskal算法)
- 最近公共祖先(离线算法)
- 图像连通区域标记
- LeetCode高频真题(5题):
- 省份数量(LeetCode 547)
- 冗余连接(LeetCode 684)
- 账户合并(LeetCode 721)
- 最长连续序列(LeetCode 128)
- 岛屿数量II(LeetCode 305)
- 时间复杂度分析:均摊O(α(n)),近似O(1)
- 实战案例:社交网络好友推荐、图像处理
16. Trie树(前缀树)⭐⭐⭐⭐⭐ 🆕¶
- 06-字典树.md 📕 10,000+字 🆕
- ✅ Trie树基础概念(自动补全比喻)
- ✅ 节点结构详解
- 核心操作:
- 插入:O(m)
- 搜索:O(m)
- 前缀匹配:O(m)
- Trie树变种:
- 压缩Trie
- 带权Trie(自动补全排序)
- 应用场景:
- 自动补全/搜索建议
- 拼写检查
- IP路由(最长前缀匹配)
- DNA序列分析
- LeetCode高频真题(5题):
- 实现Trie(LeetCode 208)
- 单词搜索II(LeetCode 212)
- 添加与搜索单词(LeetCode 211)
- 键值映射(LeetCode 677)
- 搜索推荐系统(LeetCode 1268)
- Python和C++双语言完整实现
17. 线段树与树状数组 ⭐⭐⭐⭐⭐ 🆕¶
- 07-线段树.md 📕 12,000+字 🆕
- ✅ 线段树基础(区间查询/修改)
- ✅ 线段树实现:
- 建树:O(n)
- 区间查询:O(log n)
- 单点修改:O(log n)
- 区间修改(懒标记):O(log n)
- ✅ 树状数组(Fenwick Tree):
- lowbit运算详解
- 前缀和查询:O(log n)
- 单点修改:O(log n)
- 对比与选择指南:
- 前缀和+单点修改 → 树状数组
- 区间修改 → 线段树
- LeetCode高频真题:
- 区域和检索-数组可修改(LeetCode 307)
- 计算右侧小于当前元素的个数(LeetCode 315)
- 最长递增子序列(树状数组优化)
- Python和C++双语言完整实现
18. 数学算法 ⭐⭐⭐⭐ 🆕¶
- 08-数学算法.md 📕 8,000+字 🆕
- ✅ 数论基础:
- 质数判断:O(√n)
- 埃氏筛:O(n log log n)
- 线性筛(欧拉筛):O(n)
- GCD和LCM
- ✅ 快速幂:
- 原理:二进制分解
- 时间:O(log n)
- 应用:大数幂运算
- ✅ 组合数学:
- 组合数预处理:O(n)
- 卡特兰数
- ✅ 位运算技巧:
- lowbit:x & (-x)
- 清除最低位1:x & (x-1)
- 判断2的幂
- LeetCode高频真题:
- Pow(x, n)(LeetCode 50)
- 计数质数(LeetCode 204)
- 超级次方(LeetCode 372)
- Python和C++双语言完整实现
📖 阶段四:实战强化¶
15. LeetCode 100+题详解 ⭐⭐⭐⭐⭐¶
- 01-LeetCode精选100题.md 📕 35,000+字
- 数组(10题):
- 两数之和(暴力、哈希表、双指针)
- 买卖股票的最佳时机(暴力、一次遍历)
- 最大子数组和(Kadane算法、分治法)
- 删除有序数组中的重复项(双指针)
- 轮转数组(三次翻转、额外数组)
- 除自身以外数组的乘积(左右乘积列表)
- 三数之和(排序+双指针)
- 搜索二维矩阵II(从右上角搜索)
- 合并区间(排序+遍历)
- 矩阵置零(首行首列标记)
- 链表(5题):
- 反转链表(迭代、递归)
- 合并两个有序链表
- 环形链表(快慢指针)
- 环形链表II(快慢指针+数学证明)
- 回文链表(反转后半部分)
- 树(5题):
- 二叉树的最大深度(递归)
- 验证二叉搜索树(递归+上下界)
- 对称二叉树(递归)
- 层序遍历(BFS)
- 二叉树展开为链表(迭代)
- 动态规划(5题):
- 爬楼梯(DP、矩阵快速幂)
- 打家劫舍(DP优化)
- 零钱兑换(DP)
- 最长递增子序列(DP、二分查找)
- 完全平方数(DP)
- 图(3题):
- 课程表(拓扑排序)
- 课程表II(拓扑排序)
- 被围绕的区域(DFS标记)
- 排序/搜索(7题):
- 合并两个有序数组(从后向前)
- 第一个错误的版本(二分查找)
- 搜索插入位置(二分查找)
- 搜索二维矩阵(二分查找)
- 查找元素的第一个和最后一个位置(两次二分)
- 寻找峰值(二分查找)
- ✅ 每题包含:问题描述、多种解法、执行过程演示、复杂度分析
- ✅ 面试高频题Top 20标注
- ✅ 刷题策略(按难度、按标签、重复刷题)
- 回溯算法基础(DFS + 剪枝)
- 回溯 vs 递归 vs DFS
- 全排列问题(LeetCode 46):
- 标准全排列(used数组法)
- 交换法优化
- 包含重复数字的全排列(LeetCode 47)
- 组合问题(LeetCode 77):
- 从n个数选k个组合
- 剪枝优化
- 子集问题(LeetCode 78):
- 所有子集生成
- 回溯树图解
- N皇后问题⭐⭐⭐⭐⭐(LeetCode 51):
- 经典回溯问题
- 约束:行列斜线互不攻击
- 完整递归树图解
- 括号生成(LeetCode 22):
- 合法括号生成
- 卡特兰数
- 分割回文串(LeetCode 131):
- 回文判断
- 分割方案
- LeetCode高频真题:
- 组合总和(LeetCode 39, 40)
- 单词搜索(LeetCode 79)
- 复原IP地址(LeetCode 93)
- 回溯优化技巧:剪枝、排序去重、双向搜索
🛠️ 代码模板(2个可运行文件,已更新)¶
- Python模板.md - Python模板(1500+行,Markdown格式)✅
- ✅ 原有内容:排序、搜索、DP、数据结构、工具函数
- ✅ 新增:
- 回溯算法(全排列、组合、子集、括号生成)
- 字符串算法(KMP、Manacher)
- 大厂高频题(两数之和、最大子数组和、接雨水、最长有效括号、滑动窗口最大值、岛屿数量、零钱兑换、最长递增子序列)
- ✅ 所有函数包含详细注释和时间/空间复杂度分析
-
✅ 包含使用示例和学习建议
-
C++模板.md - C++模板(1200+行,Markdown格式)✅
- ✅ 原有内容:排序、搜索、DP、数据结构、工具函数
- ✅ 新增:回溯算法、数学算法、线段树、树状数组
- ✅ 所有函数包含详细注释和时间/空间复杂度分析
- ✅ 包含竞赛编程模板头和使用建议
🎯 学习建议¶
新手路径¶
Text Only
第1周:复杂度分析 + 数组
├─ 阅读 01-复杂度分析.md
├─ 阅读 02-数组.md
└─ 完成5道练习题
第2周:链表 + 栈队列
├─ 阅读 03-链表.md
├─ 阅读 04-栈.md
├─ 阅读 05-队列.md
└─ 完成10道练习题
第3-4周:排序算法
├─ 阅读 01-排序算法.md
├─ 手写每种排序3遍
└─ 完成10道练习题
第5-6周:搜索算法
├─ 阅读 02-搜索算法.md
├─ 二分搜索、BFS、DFS各写10遍
└─ 完成15道LeetCode题
第7-9周:动态规划
├─ 阅读 03-动态规划.md
├─ 完成20道DP题
└─ 总结DP模式
第10周+:进阶算法 + 刷题
├─ 图算法、贪心算法等
└─ LeetCode刷题100+
每日学习计划¶
Text Only
工作日(30-60分钟):
- 15分钟:阅读学习资料
- 30分钟:手写代码实现
- 15分钟:LeetCode练习(1-2题)
周末(60-90分钟):
- 30分钟:复习本周内容
- 30分钟:刷题(3-5题)
- 30分钟:总结笔记
💡 使用技巧¶
1. 配合代码模板¶
- 先看理论讲解
- 再看代码模板
- 自己实现一遍
- 对比参考代码
2. 正确使用AI工具¶
❌ 不要:直接让AI写代码 ✅ 应该: - 让AI解释你不理解的概念 - 让AI检查你的代码逻辑 - 让AI给出变式题目
3. 记录进度¶
- 每完成一个主题,在学习进度.md中勾选
- 每周记录学习心得
- 设置阶段性目标
📞 获取帮助¶
遇到问题?¶
- 先查看对应的学习资料
- 运行代码模板
- 使用AI工具辅助理解
- 在LeetCode讨论区提问
提问模板¶
Text Only
## 问题描述
我正在学习XX算法,遇到了XX问题
## 我的理解
我认为...(描述你的理解)
## 我的尝试
我尝试了...(描述你的尝试)
代码如下:
```text
# 你的代码
```
## 我的困惑
我不明白为什么...(具体问题)
🎉 持续更新¶
本学习系统会持续更新,计划添加: - ✅ 更多算法详解 - ✅ 更多练习题 - ✅ 更多LeetCode题解 - ✅ AI/ML应用案例 - ✅ 可视化动画 - ✅ 视频讲解链接
现在就开始你的算法学习之旅吧!🚀
从 快速入门.md 开始,5分钟快速上手!