我写了一个本地离线的 LeetCode 复习工具 —— LeetRev,开源!
刷 LeetCode 的时候,你是不是也有这些痛点?我自己亲身经历了,先列出来看看:
- 刷完就忘,过两周连题目的思路都记不起来
- 想在本地记笔记、存代码,但 LeetCode 网页版的笔记真的太难用了
- 想搞间隔复习,但找不到一个「边写代码边复习」的工具
- 用 Obsidian / Notion 记笔记,但和刷题环境是割裂的
这是什么?
LeetRev 是一个完全 离线、本地 的桌面软件(Tauri v2 + React + Rust),数据存在你电脑的 SQLite 里,不上传服务器。核心功能就是一个 带 SM-2 间隔重复算法的 LeetCode 刷题 + 复习一体化工具。
GitHub 地址:https://github.com/200762zzy/LeetRev
它能做什么?
1. 科学复习 —— SM-2 算法,让遗忘曲线失效
每道题走三轮:
| 阶段 | 做什么 |
|---|---|
| 回忆 (Recall) | 看题目描述,自己写代码,可以提交到 LeetCode 判题 |
| 对比 (Reveal) | 对比之前保存的代码、多解法参考、思路笔记 |
| 自评 (Rated) | 自评掌握度(容易/中等/困难),SM-2 自动计算下次复习时间 |
如果做对了且自评"困难",1 天后就再次出现;如果自评"容易",可能 6 天后才再次出现。长期稳定的题目间隔会越来越长,直到每个月才复习一次。复习历史页面显示每次复习的完整 SM-2 参数。
个人经验: 这个 SM-2 算法是我最看重的。以前我总是靠"感觉"决定什么时候复习,结果就是要么重复刷同一道题,要么彻底忘了。现在有了自动排期,每天打开工具就能看到今天该复习哪些题,效率提升不止一倍。
2. GitHub 风格复习热力图,一眼看穿复习节奏
概览页有类似 GitHub Contributions 的复习热力图,用绿色深浅表示每天复习了多少道题,365 天一目了然。悬停显示具体日期和数量,帮你追踪复习节奏。
个人经验: 这个热力图有个"副作用"——看到空白的绿色格子,你会忍不住去填满它,就像玩 GitHub 的打卡一样,不知不觉就坚持下来了。
3. 真正的代码编辑器,比网页版好用十倍
LeetCode 网页版的编辑器功能有限。LeetRev 内置了 CodeMirror 6,支持 14 种语言,语法高亮,一键全屏模式专注编码,还带草稿板(文本笔记 + 画板手绘)。
个人经验: 我最喜欢的是全屏模式——写题时不会被其他窗口干扰。草稿板虽然简单,但偶尔画个示意图理清思路,比纯文字好多了。
4. 直接在本地提交到 LeetCode 判题,实时反馈
在复习模式中,写好代码直接点「提交判题」,实时返回判题结果(通过/答案错误/编译错误/运行错误)。通过后自动保存代码和笔记,并强制进入自评阶段,确保 SM-2 复习周期完整记录。
判题失败会阻塞"查看答案"按钮,必须先修复代码重新提交 —— 模拟真实笔试环境。
个人经验: 这个设计一开始我还觉得有点"狠",但后来发现它真的能逼你多想一步。哪怕只是编译错误,你也得自己先调通了,才能看到答案。这样印象更深。
5. 内联 API 速查 + 自定义笔记,告别百度搜索
刷题时经常需要查 STL 方法签名。LeetRev 内置了 93 条 C++ 方法级别的 API 参考(vector、string、map、unordered_map、stack、queue、algorithm...)。按 Ctrl+Shift+A 随时打开搜索,包含签名、复杂度、LeetCode 实战技巧。
你还可以自定义添加 API 条目,表单自动保存草稿,不怕误关闭丢失内容。
个人经验: 这个功能其实是从我自己的需求出发的。每次刷题要查 std::lower_bound 的用法,总是在浏览器和编辑器之间来回切,烦死了。现在直接在工具里查,顺手还能记下自己容易忘的细节。
6. 多解法管理,每次复习都有不同收获
一道题可以存多个命名解法(如"双指针"、"动态规划"、"哈希表"),每个解法包含标题、代码、复杂度分析、思路说明。复习对比阶段自动展示所有解法作为参考。
个人经验: 我通常会给同一道题存3-4种解法,复习时看一遍,就能回忆起不同思路的优劣。这比单纯背代码有效多了。
7. LeetCode 进度同步,一键拉取所有题目
配置 LEETCODE_SESSION cookie 后,一键导入已解决/已尝试的题目,自动拉取题目描述、标签、代码模板。同步时自动创建缺失标签(前缀和、线段树等 50+ 个)。
个人经验: 这个功能对已经刷了几百题的人特别友好。我之前的进度都丢在 LeetCode 网页上,有了同步,所有题目都能直接拉到本地复习,不用手动一个个添加。
8. 统计看板,数据驱动复习策略
首页 ECharts 图表展示难度分布、标签分布、薄弱环节分析,一目了然。还包含复习热力图,用 GitHub 风格的绿色网格直观展示每天的复习量。
个人经验: 看统计图的时候,你会发现自己的薄弱标签——比如我一开始"树"和"图"的分布明显偏低,然后就针对性地多刷了几道,效果显著。
快速体验
直接下载安装包
从 GitHub Releases 下载最新版安装包(Windows x64):
LeetRev_x64-setup.exe (NSIS 安装包)
LeetRev_x64_en-US.msi (MSI 安装包)
从源码构建
git clone https://github.com/200762zzy/LeetRev.git
cd LeetRev
npm install
npm run tauri dev # 开发模式
npm run tauri build # 构建发布版
配置 LeetCode 同步
- 打开设置页 → 点击「在浏览器中打开登录页」
- 登录 LeetCode → F12 → Application → Cookies → 复制
LEETCODE_SESSION - 粘贴到设置页 → 点击「从 LeetCode 同步」
技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 19 + TypeScript 6 + Vite 8 + TailwindCSS |
| 桌面框架 | Tauri v2 (Rust) |
| 编辑器 | CodeMirror 6 |
| 数据库 | SQLite (rusqlite) |
| 图表 | ECharts |
| 画板 | Canvas 原生 |
| 判题 | LeetCode.cn GraphQL API |
| 间隔重复 | SM-2 算法 |
开源 & 贡献
项目完全开源,MIT 协议。
- GitHub:https://github.com/200762zzy/LeetRev
- 欢迎 Star ⭐、Issue、PR
如果你也在刷 LeetCode,试试这个工具,希望能让你的复习效率翻倍。有任何问题或建议,欢迎在 GitHub 上交流!


被折叠的 条评论
为什么被折叠?



