本项目专为计算机专业求职者设计,帮助你从 Python 零基础到能够独立解决 LeetCode 中等难度题目,系统准备企业笔试、机试与技术面试。
- 📚 系统学习路线 — 6 阶段覆盖 Python 基础、算法刷题、ACM 笔试真题、面试手撕与八股文
- 🖥️ 在线练习场 — 内置 98 道 Hot 100 题目,浏览器直接运行 Python
- 🎯 ACM 模拟 IDE — 支持 Python / Go / Java 17(Preview)、stdin/stdout、输出对比和 Python 断点调试
- 🤖 AI 编程教练 — 在练习场诊断题目与代码,也能读取 ACM 代码和样例,把 Python 解法快速转换为 Java 17 / Go
- 📝 完整题解 — LeetCode Hot 100 全部题解
- ✅ Python 语言零基础或仅掌握基础语法
- ✅ 准备校招/社招笔试机试
- ✅ 目标通过 LeetCode Medium 难度
建议 12-18 周,每天投入 2-3 小时
想先看演示再开刷,可以直接看这条 B 站视频。
零门槛刷力扣 Hot100!免费在线 OJ + AI 教练,不用登录直接开刷
视频地址:https://www.bilibili.com/video/BV129QmBGE3Q/
这条视频会快速带你了解项目的核心使用方式:
- 浏览器内直接刷 LeetCode Hot 100,不用本地搭环境
- 内置免费在线 OJ,打开页面就能写代码、运行和调试
- AI 教练自动读取当前题目和代码,给出提示、诊断和讲解
- 不用登录,打开即用,适合零基础和面试前集中训练
如果你想先看完整演示,再按仓库里的学习路线系统刷题,建议先看视频,再进入下方的 AI 助手和题单部分。
默认接入 OpenRouter 免费模型 — 无需登录,也可以在设置中换成支持浏览器 CORS 和流式
/chat/completions的 OpenAI 兼容 API
AI 教练同时用于两个编程页面:在 LeetCode 练习场读取当前题目与 Python 代码,给出提示和诊断;在 ACM 模拟 IDE 读取当前语言、代码、stdin、stdout、期望输出和运行状态,并基于已经写通的 Python 解法生成完整的 Java 17 或 Go ACM 程序。
仓库题解仍以 Python 为主,不逐题人工维护 Java / Go 版本。语言转换结果由 AI 生成,请务必使用页面中的样例运行和输出对比再次验证。
| 场景 | 按钮 | 功能 |
|---|---|---|
| ACM | 转为 Java 17 | 生成包含 public class Main 的完整 Java 17 程序,保留 stdin/stdout |
| ACM | 转为 Go | 生成包含 package main 的完整 Go 程序,保留 stdin/stdout |
| 通用 | 检查代码 / 分析报错 | 结合代码、样例和最近输出定位问题 |
| 通用 | 解释思路 | 说明算法、关键变量和复杂度 |
| LeetCode | 给个提示 / 解释题目 / 优化代码 | 按当前题目提供教学式帮助 |
- 打开 在线练习场 或 ACM 模拟 IDE
- 点击「AI 教练」打开对话面板
- 在 ACM 页面先用 Python 写出解法和样例,再点击「转为 Java 17」或「转为 Go」
- 继续追问转换结果或语言差异,把返回的完整代码复制到目标语言编辑器后运行验证
数据说明: 只有主动发送消息时,页面才会把当前上下文提交给所配置的 AI 服务。ACM 上下文可能包含代码、stdin、stdout 和期望输出,请勿放入密钥或隐私数据。默认使用 OpenRouter 免费模型;点击齿轮按钮可以更换 API、模型或密钥。
模拟大厂笔试真实环境 — 直接粘贴真题代码,输入测试数据,一键运行
大厂笔试(阿里、美团、华为等)普遍使用 ACM 模式:程序从标准输入读取数据,再把答案写到标准输出,和 LeetCode 的函数式调用完全不同。ACM 模拟 IDE 专为此场景设计。
| 功能 | 说明 |
|---|---|
| 📥 stdin/stdout | Python、Go 与 Java 均可直接读取标准输入并输出结果 |
| 🧩 语言切换 | Python 浏览器内运行,Go 使用官方 Playground,Java 17(Preview)使用 CheerpJ 4.3 + ECJ 3.42.0 在浏览器内编译运行 |
| 📝 输入模板 | 三种语言各有 7 种常用模板(单整数、数组、矩阵、多组用例、图等) |
| ✅ 输出对比 | 填入期望输出,自动判定 ACCEPTED / WRONG ANSWER |
| 🤖 AI 语言转换 | 读取当前代码与样例,把 Python 解法转换为完整 Java 17 / Go ACM 程序,并支持继续追问 |
| 🐛 断点调试 | Python 可点击行号设置断点,逐行回放并查看变量变化 |
| 💾 自动保存 | Python / Go / Java 草稿分别保存,切换语言和刷新均不丢失 |
- 打开 ACM 模拟 IDE,先用 Python 编写或粘贴解法
- 在右侧填写输入和期望输出,点击「运行」或按
Ctrl+Enter验证 Python 结果 - 点击「AI 教练」,选择「转为 Java 17」或「转为 Go」生成完整 ACM 程序
- 切换到目标语言,把 AI 返回的代码复制到编辑器,再运行并对比样例输出
- 需要定位 Python 逻辑时,可点击「调试」逐行回放并查看变量状态
Java 源码完全在当前浏览器中处理:页面从 Leaning Technologies 官方 CDN 加载 CheerpJ 4.3,由随站点发布的 ECJ 3.42.0 和版本化 runner assets/vendor/zero2leetcode-java-runner-20260803.jar 编译 Main.java,再在 CheerpJ 的 Java 17 运行时中执行。源码、标准输入和程序输出不会上传到本站或第三方代码执行服务。
这里的“不上传”仅指编译和运行过程。主动使用 AI 教练时,当前代码和输入输出会提交给所配置的 AI 服务,用于生成回复。
runner 使用 JDK 21 的 lib/ct.sym 提取 Java 17 API 签名,并把这些 .sig 文件和索引一起打包。浏览器运行时通过自定义 JavaFileManager 将它们作为 ECJ 的 PLATFORM_CLASS_PATH,因此编译阶段不依赖 CheerpJ JRE 提供完整的本地 JDK 文件布局。构建 runner 需要 JDK 21,runner 自身及用户代码的编译、运行目标均为 Java 17。
这条执行链不依赖后端编译服务器,因此没有服务器按次执行费用。个人项目和 FOSS 项目可按 CheerpJ Community License 免费、不计量地使用官方 CDN,页面已保留所要求的可见署名;若项目所有者或使用性质变化,应重新核对官方许可。当前 runner 文件为 5.69 MiB(5,963,733 bytes);CheerpJ 4.3 的 Java 17 lib/modules 镜像为 36.38 MiB(38,145,733 bytes),但运行时支持 HTTP Range 并按需读取模块片段,不会固定在首次运行时下载整个镜像。加上 CheerpJ loader、WebAssembly 和实际命中的模块片段后,冷启动传输量会随程序、浏览器和缓存状态变化,不能用固定的总量区间表示;若 runner 与整个模块镜像均完整传输,两者合计约 42.07 MiB。资源缓存后,后续打开通常无需重复完整下载。首次加载必须能够访问 CheerpJ 官方 CDN。
当前 Java 支持编译运行、stdin/stdout 和样例输出对比,作为 Java 17 Preview 提供;暂不支持逐行调试。逐行回放和变量查看仍仅适用于 Python。第三方组件、版本、校验值与许可证见 THIRD_PARTY_NOTICES.md。
flowchart TB
subgraph foundation["基础能力"]
direction LR
python["阶段一<br/>Python 基础语法<br/>1-2 周"]
structures["阶段二<br/>数据结构掌握<br/>2-3 周"]
algorithms["阶段三<br/>核心算法突破<br/>3-4 周"]
python --> structures --> algorithms
end
subgraph jobReady["求职实战"]
direction LR
practice["阶段四<br/>LeetCode 实战<br/>2-3 周"]
acm["阶段五<br/>ACM 模式笔试真题<br/>2-3 周"]
interview["阶段六<br/>面试手撕与八股文<br/>2-3 周"]
practice --> acm --> interview
end
foundation --> jobReady
classDef pythonStage fill:#e8f3ff,stroke:#1f6feb,color:#0b1f33,stroke-width:2px
classDef structureStage fill:#eafbf0,stroke:#238636,color:#102a18,stroke-width:2px
classDef algorithmStage fill:#fff4e5,stroke:#b35900,color:#3b2300,stroke-width:2px
classDef practiceStage fill:#f4ecff,stroke:#8250df,color:#27143d,stroke-width:2px
classDef acmStage fill:#ffeef0,stroke:#cf222e,color:#3d0c11,stroke-width:2px
classDef interviewStage fill:#e6fffb,stroke:#0f766e,color:#0f2f2c,stroke-width:2px
class python pythonStage
class structures structureStage
class algorithms algorithmStage
class practice practiceStage
class acm acmStage
class interview interviewStage
| 模块 | 知识点 | 重要程度 |
|---|---|---|
| 变量与类型 | int, float, str, bool, None | ⭐⭐⭐⭐⭐ |
| 控制流 | if/elif/else, for, while, break, continue | ⭐⭐⭐⭐⭐ |
| 函数 | def, 参数, 返回值, lambda, 作用域 | ⭐⭐⭐⭐⭐ |
| 集合类型 | list, dict, set, tuple | ⭐⭐⭐⭐⭐ |
| 面向对象 | class, 继承, __init__, __str__ |
⭐⭐⭐ |
| 数据结构 | 核心操作 | 刷题重点 |
|---|---|---|
| 数组 | 遍历, 双指针, 原地操作 | ⭐⭐⭐⭐⭐ |
| 字符串 | 滑动窗口, 回文判断 | ⭐⭐⭐⭐⭐ |
| 链表 | 指针操作, 虚拟头节点, 反转 | ⭐⭐⭐⭐ |
| 栈/队列 | LIFO/FIFO, 单调栈 | ⭐⭐⭐⭐ |
| 哈希表 | O(1)查找, 去重, 计数 | ⭐⭐⭐⭐⭐ |
| 树 | 前中后序遍历, 层序遍历 | ⭐⭐⭐⭐⭐ |
| 堆 | TopK 问题, 优先队列 | ⭐⭐⭐ |
| 图 | 邻接表, DFS/BFS | ⭐⭐⭐ |
| 算法 | 核心思想 | 难度 |
|---|---|---|
| 排序 | 快排, 归并, 堆排序 | ⭐⭐ |
| 二分查找 | 边界处理, 变体题 | ⭐⭐⭐ |
| 双指针 | 对撞指针, 快慢指针 | ⭐⭐ |
| 滑动窗口 | 动态维护区间 | ⭐⭐⭐ |
| 递归/回溯 | 状态树, 剪枝 | ⭐⭐⭐⭐ |
| BFS/DFS | 层序/深度搜索 | ⭐⭐⭐ |
| 动态规划 | 状态定义, 转移方程 | ⭐⭐⭐⭐⭐ |
| 贪心 | 局部最优→全局最优 | ⭐⭐⭐ |
主攻 LeetCode Hot 100,覆盖面试高频题
进入 大厂笔试机试真题,按公司和岗位限时完成真实题目,并使用 ACM 模拟 IDE 训练标准输入输出、样例验证与现场调试。
进入 大厂面试备战,结合高频手撕代码、计算机基础、岗位八股文和真实面经,训练现场讲解、追问应对与完整面试表达。
点击题号直接跳转 LeetCode 官方练习!
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 1 | 两数之和 | 🟢 Easy | solution |
| 49 | 字母异位词分组 | 🟡 Medium | solution |
| 128 | 最长连续序列 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 11 | 盛最多水的容器 | 🟡 Medium | solution |
| 15 | 三数之和 | 🟡 Medium | solution |
| 42 | 接雨水 | 🔴 Hard | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 3 | 无重复字符的最长子串 | 🟡 Medium | solution |
| 76 | 最小覆盖子串 | 🔴 Hard | solution |
| 438 | 找到字符串中所有字母异位词 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 53 | 最大子数组和 | 🟡 Medium | solution |
| 56 | 合并区间 | 🟡 Medium | solution |
| 560 | 和为 K 的子数组 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 20 | 有效的括号 | 🟢 Easy | solution |
| 155 | 最小栈 | 🟡 Medium | solution |
| 394 | 字符串解码 | 🟡 Medium | solution |
| 739 | 每日温度 | 🟡 Medium | solution |
| 84 | 柱状图中最大的矩形 | 🔴 Hard | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 206 | 反转链表 | 🟢 Easy | solution |
| 21 | 合并两个有序链表 | 🟢 Easy | solution |
| 141 | 环形链表 | 🟢 Easy | solution |
| 142 | 环形链表 II | 🟡 Medium | solution |
| 160 | 相交链表 | 🟢 Easy | solution |
| 19 | 删除链表的倒数第 N 个结点 | 🟡 Medium | solution |
| 24 | 两两交换链表中的节点 | 🟡 Medium | solution |
| 25 | K 个一组翻转链表 | 🔴 Hard | solution |
| 148 | 排序链表 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 94 | 二叉树的中序遍历 | 🟢 Easy | solution |
| 104 | 二叉树的最大深度 | 🟢 Easy | solution |
| 226 | 翻转二叉树 | 🟢 Easy | solution |
| 101 | 对称二叉树 | 🟢 Easy | solution |
| 543 | 二叉树的直径 | 🟢 Easy | solution |
| 102 | 二叉树的层序遍历 | 🟡 Medium | solution |
| 108 | 将有序数组转换为BST | 🟢 Easy | solution |
| 98 | 验证二叉搜索树 | 🟡 Medium | solution |
| 230 | BST中第K小的元素 | 🟡 Medium | solution |
| 199 | 二叉树的右视图 | 🟡 Medium | solution |
| 114 | 二叉树展开为链表 | 🟡 Medium | solution |
| 105 | 从前序与中序遍历序列构造二叉树 | 🟡 Medium | solution |
| 437 | 路径总和 III | 🟡 Medium | solution |
| 236 | 二叉树的最近公共祖先 | 🟡 Medium | solution |
| 124 | 二叉树中的最大路径和 | 🔴 Hard | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 200 | 岛屿数量 | 🟡 Medium | solution |
| 994 | 腐烂的橘子 | 🟡 Medium | solution |
| 207 | 课程表 | 🟡 Medium | solution |
| 208 | 实现 Trie (前缀树) | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 46 | 全排列 | 🟡 Medium | solution |
| 78 | 子集 | 🟡 Medium | solution |
| 17 | 电话号码的字母组合 | 🟡 Medium | solution |
| 39 | 组合总和 | 🟡 Medium | solution |
| 22 | 括号生成 | 🟡 Medium | solution |
| 79 | 单词搜索 | 🟡 Medium | solution |
| 131 | 分割回文串 | 🟡 Medium | solution |
| 51 | N 皇后 | 🔴 Hard | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 35 | 搜索插入位置 | 🟢 Easy | solution |
| 74 | 搜索二维矩阵 | 🟡 Medium | solution |
| 34 | 在排序数组中查找元素的第一个和最后一个位置 | 🟡 Medium | solution |
| 33 | 搜索旋转排序数组 | 🟡 Medium | solution |
| 153 | 寻找旋转排序数组中的最小值 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 70 | 爬楼梯 | 🟢 Easy | solution |
| 118 | 杨辉三角 | 🟢 Easy | solution |
| 198 | 打家劫舍 | 🟡 Medium | solution |
| 279 | 完全平方数 | 🟡 Medium | solution |
| 322 | 零钱兑换 | 🟡 Medium | solution |
| 139 | 单词拆分 | 🟡 Medium | solution |
| 300 | 最长递增子序列 | 🟡 Medium | solution |
| 152 | 乘积最大子数组 | 🟡 Medium | solution |
| 416 | 分割等和子集 | 🟡 Medium | solution |
| 32 | 最长有效括号 | 🔴 Hard | solution |
| 62 | 不同路径 | 🟡 Medium | solution |
| 64 | 最小路径和 | 🟡 Medium | solution |
| 5 | 最长回文子串 | 🟡 Medium | solution |
| 1143 | 最长公共子序列 | 🟡 Medium | solution |
| 72 | 编辑距离 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 121 | 买卖股票的最佳时机 | 🟢 Easy | solution |
| 55 | 跳跃游戏 | 🟡 Medium | solution |
| 45 | 跳跃游戏 II | 🟡 Medium | solution |
| 763 | 划分字母区间 | 🟡 Medium | solution |
| 136 | 只出现一次的数字 | 🟢 Easy | solution |
| 169 | 多数元素 | 🟢 Easy | solution |
| 75 | 颜色分类 | 🟡 Medium | solution |
| 31 | 下一个排列 | 🟡 Medium | solution |
| 287 | 寻找重复数 | 🟡 Medium | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 215 | 数组中的第K个最大元素 | 🟡 Medium | solution |
| 347 | 前 K 个高频元素 | 🟡 Medium | solution |
| 295 | 数据流的中位数 | 🔴 Hard | solution |
| # | 题目 | 难度 | 本地题解 |
|---|---|---|---|
| 73 | 矩阵置零 | 🟡 Medium | solution |
| 54 | 螺旋矩阵 | 🟡 Medium | solution |
| 48 | 旋转图像 | 🟡 Medium | solution |
| 240 | 搜索二维矩阵 II | 🟡 Medium | solution |
zero2Leetcode/
├── README.md # 项目说明
├── index.html # 🌐 前端学习平台入口
├── playground.html # 🖥️ 在线练习场(含 AI 助手)
├── acm-playground.html # 🎯 ACM 模拟 IDE(stdin/stdout + 调试)
├── requirements.txt # Python 依赖
│
├── assets/
│ ├── css/
│ │ ├── style.css # 全站设计系统
│ │ ├── playground.css # 练习场 + AI 助手样式
│ │ ├── acm-playground.css # ACM 模拟 IDE 样式
│ │ └── acm-ai-assistant.css # ACM AI 教练抽屉样式
│ ├── js/
│ │ ├── playground.js # 练习场核心逻辑
│ │ ├── acm-playground.js # ACM 模拟 IDE 逻辑
│ │ └── ai-assistant.js # 练习场 / ACM 共用 AI 教练模块
│ └── images/ # 静态资源
│
├── 00_python_basics/ # Python 基础
├── 01_data_structures/ # 数据结构
├── 02_algorithms/ # 核心算法
└── 03_leetcode_practice/ # LeetCode 实战
├── hash/ # 哈希表
├── two_pointers/ # 双指针
├── sliding_window/ # 滑动窗口
├── stack/ # 栈
├── linked_list/ # 链表
├── tree/ # 树
├── graph/ # 图
├── backtrack/ # 回溯
├── binary_search/ # 二分查找
├── dp/ # 动态规划
├── greedy/ # 贪心
├── heap/ # 堆
├── matrix/ # 矩阵
└── other/ # 其他技巧
# 克隆项目
git clone https://github.com/ranxi2001/zero2Leetcode.git
cd zero2Leetcode
# 启动本地服务器
python3 -m http.server 8080
# 在线练习场: http://localhost:8080/playground.html
# ACM 模拟 IDE: http://localhost:8080/acm-playground.html
# 运行 Python 示例
python 00_python_basics/01_variables_types/concepts.pypython -m http.server 即可验证 Java 浏览器执行,无需本地代理或执行服务器。首次运行 Java 时仍需联网从 CheerpJ 官方 CDN 加载运行时。
所有题解都链接到 LeetCode 官方,点击表格中的题目名称即可跳转在线练习!
👉 推荐学习计划: LeetCode 力扣 Hot 100 官方题单
- 循序渐进: 按阶段学习,不要跳跃
- 动手为先: 每道题先自己尝试 15-30 分钟
- 善用 AI: 卡住时点 🤖 助手获取提示,而不是直接看答案
- 理解模板: 掌握每类题型的解题模板
- 重复练习: 做错的题目隔 3-5 天重做
- 总结归纳: 建立自己的错题本和模板库
MIT License © 2026
CheerpJ、Eclipse ECJ 等第三方组件采用各自许可证,详见 THIRD_PARTY_NOTICES.md。
🌟 如果对你有帮助,请点个 Star!


