代码随想录 · 全网最强数据结构算法学习路线
🌍 海外英文版 ·
🌍🇸 英文仓库 ·
🇨🇳 国内在线阅读 ·
🇨 Gitee 同步
一套 循序渐进、少走弯路 的刷题计划。
题目已按知识脉络与难度 排好顺序,每题配 图文题解 + 视频讲解。
适合从零到进阶、系统化掌握数据结构与算法。
🔗 快速入口
📚 为什么选这套刷题路线?
- 不再海选题目:README 就是刷题路线,按顺序刷即可。
- 全链路学习体验:每个专题含「理论基础 → 实战题目 → 总结复盘」。
- 经典高频必会:题目均为高频面试题与典型考点。
- 多语言覆盖:除 C++ 主线,还有社区贡献的多语言实现。
🚀 如何使用本攻略
- 从头开始:按模块顺序「数组 → 链表 → 哈希表 → … → 图论」。
- 带着问题学:每个模块先看「理论基础」,再刷对应题单。
- 及时复盘:刷完一个模块,阅读「总结篇」,形成知识闭环。
- 语言不设限:题解以 C++ 讲解为主,配多语言代码,思路通用。
建议:新手先刷「数组/链表/哈希/字符串」,再进阶到「二叉树/回溯/贪心/动态规划/图论」。
🧭 刷题总目录(可折叠)
已根据学习曲线优化排序;下方仅展示每章前若干题目,完整清单请展开查看。
前序
* AI工具
* [国内支付宝、微信给ChatGPT、Claude充值](https://github.com/youngyangyang04/gpt-daichong)
* [国内如何使用Claude Code](https://github.com/youngyangyang04/claude-code-usage)
* [Claude Code OpAPI 接入](https://github.com/youngyangyang04/chatgpt-claude-api)
* 算法性能分析
* [关于时间复杂度,你不知道的都在这里!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/时间复杂度.md)
* [O(n)的算法居然超时了,此时的n究竟是多大?](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/算法超时.md)
* [通过一道面试题目,讲一讲递归算法的时间复杂度!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/递归算法的时间复杂度.md)
* [关于空间复杂度,可能有几个疑问?](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/空间复杂度.md)
* [递归算法的时间与空间复杂度分析!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/递归算法的时间与空间复杂度分析.md)
* [刷了这么多题,你了解自己代码的内存消耗么?](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/前序/内存消耗.md)
数组
1. [数组过于简单,但你该了解这些!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/数组理论基础.md)
2. [数组:704.二分查找](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0704.二分查找.md)
3. [数组:27.移除元素](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0027.移除元素.md)
4. [数组:977.有序数组的平方](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0977.有序数组的平方.md)
5. [数组:209.长度最小的子数组](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0209.长度最小的子数组.md)
6. [数组:区间和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/kamacoder/0058.区间和.md)
7. [数组:开发商购买土地](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/kamacoder/0044.开发商购买土地.md)
8. [数组:59.螺旋矩阵II](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0059.螺旋矩阵II.md)
9. [数组:总结篇](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/数组总结篇.md)
链表
1. [关于链表,你该了解这些!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/链表理论基础.md)
2. [链表:203.移除链表元素](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0203.移除链表元素.md)
3. [链表:707.设计链表](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0707.设计链表.md)
4. [链表:206.翻转链表](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0206.翻转链表.md)
5. [链表:24.两两交换链表中的节点](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0024.两两交换链表中的节点.md)
6. [链表:19.删除链表的倒数第 N 个结点](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0019.删除链表的倒数第N个节点.md)
7. [链表:链表相交](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/面试题02.07.链表相交.md)
8. [链表:142.环形链表](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0142.环形链表II.md)
9. [链表:总结篇!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/链表总结篇.md)
哈希表
1. [关于哈希表,你该了解这些!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/哈希表理论基础.md)
2. [哈希表:242.有效的字母异位词](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0242.有效的字母异位词.md)
3. [哈希表:1002.查找常用字符](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/1002.查找常用字符.md)
4. [哈希表:349.两个数组的交集](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0349.两个数组的交集.md)
5. [哈希表:202.快乐数](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0202.快乐数.md)
6. [哈希表:1.两数之和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0001.两数之和.md)
7. [哈希表:454.四数相加II](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0454.四数相加II.md)
8. [哈希表:383.赎金信](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0383.赎金信.md)
9. [哈希表:15.三数之和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0015.三数之和.md)
10. [双指针法:18.四数之和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0018.四数之和.md)
11. [哈希表:总结篇!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/哈希表总结.md)
字符串
1. [字符串:344.反转字符串](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0344.反转字符串.md)
2. [字符串:541.反转字符串II](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0541.反转字符串II.md)
3. [字符串:替换数字](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/kamacoder/0054.替换数字.md)
4. [字符串:151.翻转字符串里的单词](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0151.翻转字符串里的单词.md)
5. [字符串:右旋字符串](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/kamacoder/0055.右旋字符串.md)
6. [帮你把KMP算法学个通透](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0028.实现strStr.md)
8. [字符串:459.重复的子字符串](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0459.重复的子字符串.md)
9. [字符串:总结篇!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/字符串总结.md)
双指针法
双指针法基本都是应用在数组,字符串与链表的题目上
1. [数组:27.移除元素](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0027.移除元素.md)
2. [字符串:344.反转字符串](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0344.反转字符串.md)
3. [字符串:替换数字](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/kamacoder/0054.替换数字.md)
4. [字符串:151.翻转字符串里的单词](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0151.翻转字符串里的单词.md)
5. [链表:206.翻转链表](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0206.翻转链表.md)
6. [链表:19.删除链表的倒数第 N 个结点](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0019.删除链表的倒数第N个节点.md)
7. [链表:链表相交](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/面试题02.07.链表相交.md)
8. [链表:142.环形链表](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0142.环形链表II.md)
9. [双指针:15.三数之和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0015.三数之和.md)
10. [双指针:18.四数之和](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0018.四数之和.md)
11. [双指针:总结篇!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/双指针总结.md)
栈与队列
1. [栈与队列:理论基础](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/栈与队列理论基础.md)
2. [栈与队列:232.用栈实现队列](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0232.用栈实现队列.md)
3. [栈与队列:225.用队列实现栈](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0225.用队列实现栈.md)
4. [栈与队列:20.有效的括号](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0020.有效的括号.md)
5. [栈与队列:1047.删除字符串中的所有相邻重复项](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/1047.删除字符串中的所有相邻重复项.md)
6. [栈与队列:150.逆波兰表达式求值](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0150.逆波兰表达式求值.md)
7. [栈与队列:239.滑动窗口最大值](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0239.滑动窗口最大值.md)
8. [栈与队列:347.前K个高频元素](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/0347.前K个高频元素.md)
9. [栈与队列:总结篇!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/栈与队列总结.md)
二叉树
题目分类大纲如下:
1. [关于二叉树,你该了解这些!](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/二叉树理论基础.md)
2. [二叉树:二叉树的递归遍历](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/二叉树的递归遍历.md)
3. [二叉树:二叉树的迭代遍历](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./problems/二叉树的迭代遍历.md)
4. [二叉树:二叉树的统一迭代法](https://github.com/youngyangyang04/leetcode-master/blob/HEAD/./pr