📈 GH Trending Explorer 🎲 Surprise me

← all repos

jeffzc24-cmyk / algorithm-practice-roadmap

git clone https://github.com/jeffzc24-cmyk/algorithm-practice-roadmap.git

算法入门刷题规划:236 道题,覆盖 LeetCode、AtCoder、洛谷与 Codeforces;含章节题单、学习资料和离线交互网页。

+0
stars, 24h · #31,881
+~0
stars, 7 days · #32,356
+101
stars, 30 days · #4,858
94
★ total
0
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 101 ★ 2026-10-22 · 94 ★
LanguageHTML
LicenseMIT
Created2026-09-27 (25d ago)
Last push25d ago
Watchers0
OwnerUser

GitHub topics

Links

README excerpt
# 算法入门刷题规划
从基础题型,到完整程序,再到入门竞赛。
**236 道题 · 4 个平台 · 3 条路线**
开始使用 · 完整题单 · 整场练习 · 资料与维护
一份按知识点和章节组织的算法入门题单。保留题目、学习资料与题解的外部链接,并提供可离线使用的交互网页。
| 路线 | 章节 | 题量 | 练习重点 |
| :--- | :---: | ---: | :--- |
| LeetCode 算法主线 | 18 | 160 | 常见模型、数据结构与解题方法 |
| AtCoder · 洛谷 | 12 | 80 | 完整程序、输入输出与综合应用 |
| Codeforces 入门 | 3 | 18 | 读题、观察、构造与基础竞赛题 |
> 共 236 道不同题目:138 道 LeetCode、40 道 AtCoder、40 道洛谷、18 道 Codeforces。22 道题跨路线共享,完成一次即可。
## 开始使用
**阅读题单:** 在下方选择路线,展开章节。每章包含学习目标、C++ 工具、阅读入口、题目和过关标准。
**交互网页:** 下载仓库后,在浏览器中打开 index.html。支持章节切换、搜索、状态筛选、复盘笔记及进度导入导出,无需安装依赖。
网页不内置完成记录,进度只保存在当前浏览器中,不上传到仓库或服务器。换浏览器或设备前,可导出进度后再导入;导出的文件可能包含自己的笔记,请自行保存。
### 如何选择路线
- **准备系统练习算法:** 从算法主线开始,按章节理解模型与实现。
- **需要练完整程序:** 从 AtCoder · 洛谷第 1 章开始,补齐输入输出、多组测试和边界调试。
- **准备接触竞赛:** 能独立完成完整程序和简单题后,进入 Codeforces 入门;专题练习与整场训练可以穿插进行。
| 标记 | 建议做法 |
| :--- | :--- |
| 快练 | 独立实现,确认基本操作与边界 |
| 精做 / 主练 | 解释关键思路、正确性、时间与空间复杂度 |
| 选做 | 根据知识缺口选择,入门阶段可后置 |
| 共享题 | 两条路线使用同一道题,网页同步状态与笔记 |
先独立尝试,再按需要阅读提示和题解。提示后完成的题,可间隔其他练习后闭卷复测。通过评测是反馈之一,能解释并独立实现才是学习目标。
C++ 起步与使用说明 · 章节复盘模板
## 完整题单
### LeetCode 算法主线
按专题建立算法与数据结构的知识体系,包含 138 道 LeetCode 与 22 道完整程序练习。
| 章节 | 内容 | 题量 |
| :---: | :--- | ---: |
| 01 | 模拟、数组与枚举 | 11 |
| 02 | 哈希与计数 | 8 |
| 03 | 双指针与滑动窗口 | 8 |
| 04 | 前缀和与差分 | 6 |
| 05 | 二分查找与二分答案 | 11 |
| 06 | 链表与指针 | 9 |
| 07 | 栈、堆与单调结构 | 11 |
| 08 | 排序、分治与贪心 | 10 |
| 09 | 位运算与基础数学 | 9 |
| 10 | 树、递归与子问题返回值 | 15 |
| 11 | 图遍历、BFS 与拓扑排序 | 10 |
| 12 | 搜索、回溯与剪枝 | 10 |
| 13 | 并查集、最短路与最小生成树 | 8 |
| 14 | 基础动态规划 | 11 |
| 15 | 背包、计数与状态设计 | 9 |
| 16 | 子序列、区间与树形 DP | 7 |
| 17 | KMP 与字典树 | 3 |
| 18 | 树状数组与线段树 | 4 |
 01 · 模拟、数组与枚举 · 11 题 
**学习目标:** 根据文字规则实现程序,并从约束缩小枚举范围。
**C++ 工具:** vector、string、引用、size 与 reserve、标准输入输出。
**阅读入口**
- **进入本章:** 数组理论基础。只复查连续存储、下标、插入删除;已能解释的部分直接略过。
- **做 ABC083B 前:** OI Wiki:枚举 · 官网。只看枚举的要点:解空间、枚举范围、减少自由变量;先不看例题代码。
| # | 题目 | 投入 | 训练重点 | 参考 |
| ---: | :--- | :--- | :--- | :--- |
| 001 | PracticeA · Welcome to AtCoder | 快练 · 共享 | 标准输入输出与精确输出格式;不使用 LeetCode 的 Solution 模板。 | 对应方法 · 备用 |
| 002 | LC 27 · 移除元素 | 精做 | 快慢指针维护有效前缀,区分返回长度与修改原数组。 | 题解 |
| 003 | LC 283 · 移动零 | 快练 | 保持非零元素的相对顺序,比较交换与覆盖。 | 题解 |
| 004 | LC 26 · 删除有序数组中的重复项 | 快练 | 有序性怎样帮助去重;写指针代表什么。 | 题解 |
| 005 | LC 977 · 有序数组的平方 | 精做 | 利用两端绝对值,从结果数组末尾填入。 | 题解 |
| 006 | LC 344 · 反转字符串 | 快练 | 左右指针与奇偶长度边界。 | 题解 |
| 007 | LC 59 · 螺旋矩阵 II | 精做 | 逐层填数,写清每条边的开闭范围。 | 题解 · 备用 |
| 008 | LC 54 · 螺旋矩阵 | 精做 | 从生成矩阵迁移到遍历矩阵;单行、单列不能重复访问。 | 题解 · 备用 |
| 009 | ABC083B · Some Sums | 精做 · 共享 | 枚举整数并拆数位,明确取模与整除各自的作用。 | 对应方法 · 备用 |
| 010 | ABC085C · Otoshidama | 精做 · 共享 | 用数量约束消去一个变量,检验无解与零张数。 | 对应方法 · 备用 |
| 011 | ABC086C · Traveling | 精做 · 共享 | 由曼哈顿距离与奇偶性推导可达条件,避免逐步模拟时间。 | 对应方法 · 备用 |
**过关标准:** 能独立写标准输入输出程序;解释有效数组前缀;把三重枚举降成两重,并算清操作次数。
 02 · 哈希与计数 · 8 题 
**学习目标:** 从逐对比较转为记录信息;区分频次数组、集合、映射的用途。
**C++ 工具:** unordered_map、unordered_set、find、count、pair;哈希平均成本与最坏成本不同。
**阅读入口**
- **进入本章:** 哈希表理论基础。看数组、set、map 各适合记录什么;只读 C++,暂不深挖哈希表源码。
| # | 题目 | 投入 | 训练重点 | 参考 |
| ---: | :--- | :--- | :--- | :--- |
| 012 | LC 242 · 有效的字母异位词 | 快练 | 字符频次,使用 26 个槽位前先确认字符范围。 | 题解 |
| 013 | LC 383 · 赎金信 | 快练 | 从频