我写了一个本地离线的 LeetCode 复习工具 —— LeetRev,开源!

我写了一个本地离线的 LeetCode 复习工具 —— LeetRev,开源!

刷 LeetCode 的时候,你是不是也有这些痛点?我自己亲身经历了,先列出来看看:

  • 刷完就忘,过两周连题目的思路都记不起来
  • 想在本地记笔记、存代码,但 LeetCode 网页版的笔记真的太难用
  • 想搞间隔复习,但找不到一个「边写代码边复习」的工具
  • 用 Obsidian / Notion 记笔记,但和刷题环境是割裂的

这是什么?

LeetRev 是一个完全 离线、本地 的桌面软件(Tauri v2 + React + Rust),数据存在你电脑的 SQLite 里,不上传服务器。核心功能就是一个 带 SM-2 间隔重复算法的 LeetCode 刷题 + 复习一体化工具

GitHub stars GitHub release

GitHub 地址:https://github.com/200762zzy/LeetRev


它能做什么?

1. 科学复习 —— SM-2 算法,让遗忘曲线失效

每道题走三轮:

阶段做什么
回忆 (Recall)看题目描述,自己写代码,可以提交到 LeetCode 判题
对比 (Reveal)对比之前保存的代码、多解法参考、思路笔记
自评 (Rated)自评掌握度(容易/中等/困难),SM-2 自动计算下次复习时间

如果做对了且自评"困难",1 天后就再次出现;如果自评"容易",可能 6 天后才再次出现。长期稳定的题目间隔会越来越长,直到每个月才复习一次。复习历史页面显示每次复习的完整 SM-2 参数。

复习历史页面截图:显示每次复习的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速查界面

你还可以自定义添加 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 同步

  1. 打开设置页 → 点击「在浏览器中打开登录页」
  2. 登录 LeetCode → F12 → Application → Cookies → 复制 LEETCODE_SESSION
  3. 粘贴到设置页 → 点击「从 LeetCode 同步」

技术栈

技术
前端React 19 + TypeScript 6 + Vite 8 + TailwindCSS
桌面框架Tauri v2 (Rust)
编辑器CodeMirror 6
数据库SQLite (rusqlite)
图表ECharts
画板Canvas 原生
判题LeetCode.cn GraphQL API
间隔重复SM-2 算法

开源 & 贡献

项目完全开源,MIT 协议。

如果你也在刷 LeetCode,试试这个工具,希望能让你的复习效率翻倍。有任何问题或建议,欢迎在 GitHub 上交流!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值