Skip to content

Repository files navigation

🎲 LeetCode 学习计划随机刷题助手

力扣学习计划里的题目只能按固定顺序刷,想随机复习却没有随机按钮?

选一个正在进行的学习计划,随机抽一道题,也可以只抽当前计划中未完成的题。

Chrome Extension Edge Extension Manifest V3 License: MIT

一个为力扣中国站 leetcode.cn「学习计划」增加随机刷题功能的 Chrome / Edge 浏览器扩展,专门解决题单无法随机刷的问题。

只要是当前账号正在进行的学习计划都可以使用,例如:

  • LeetCode 热题 100 / Hot 100
  • LeetCode 75
  • 高频 SQL 50 题
  • 其他正在进行中的力扣学习计划

无论是日常复习,还是为找工作、校招或实习做准备,都可以把固定顺序的题单变成随机刷题模式。

✨ 为什么需要它

力扣学习计划的题目顺序是固定的,但复习时经常并不想从第一题一路按顺序刷到底:

  • 想打乱题单顺序,随机复习一道题
  • 想只从自己选中的学习计划里抽题
  • 想只随机当前这一轮还没有完成的题
  • 想避开最近已经随机过的题
  • 想模拟面试里“不知道下一题是什么”的感觉
  • 不想把每日一题、推荐题、历史计划混进来

所以这个扩展只做一件事:

读取当前账号正在进行的学习计划
        ↓
选择一个计划
        ↓
读取该计划的完整题单和当前这一轮完成状态
        ↓
随机一道题

🚀 功能亮点

  • 🎲 从指定学习计划中随机一道题
  • ✅ 支持只随机「当前这一轮未完成」的题
  • 🗂️ 支持 Hot 100、LeetCode 75、SQL 50 等正在进行的学习计划
  • 📚 自动读取当前账号正在进行的学习计划
  • 🔽 支持自由选择要随机的学习计划
  • 🔁 支持避免最近随机过的题重复出现
  • 🆕 支持在新标签页打开题目
  • 💾 自动记住上一次选择的学习计划
  • ⚡ 题单缓存 + 完成状态短期缓存,连续随机更快
  • 🧩 Manifest V3,支持 Chrome / Edge 开发者模式安装
  • 🔐 数据只在浏览器本地处理,不连接第三方服务器

不会混入:

  • 每日一题
  • 推荐题
  • 题库随机题
  • 已结束的历史学习计划
  • 当前计划之外的题

📸 使用效果

打开插件后:

学习计划
┌──────────────────────┐
│ LeetCode 热题 100   ▼ │
└──────────────────────┘

        🎲 随机一道

☑ 只随机未完成题

避免近期重复:5 道

☐ 新标签页打开

点击「随机一道」后,会直接打开随机到的具体题目。

📦 安装方法

目前还没有发布到 Chrome / Edge 扩展商店,可以通过开发者模式安装。

1. 下载源码

点击 GitHub 页面右上角:

Code → Download ZIP

然后解压。

也可以使用 Git:

git clone https://github.com/SynZzz-x/leetcode-random-studyplan.git

2. 打开扩展管理页面

Chrome:

chrome://extensions/

Edge:

edge://extensions/

3. 加载插件

  1. 开启「开发者模式 / 开发人员模式」
  2. 点击「加载解压缩的扩展」
  3. 选择本项目文件夹
  4. 确认扩展已经启用

安装完成后,建议把插件固定到浏览器工具栏。

🎯 使用方法

先确保当前浏览器已经登录:

https://leetcode.cn/

然后:

  1. 点击浏览器工具栏里的插件图标
  2. 第一次使用时点击「↻ 刷新」
  3. 选择一个正在进行的学习计划,例如「LeetCode 热题 100」
  4. 点击「🎲 随机一道」

插件会直接打开随机到的题目。

✅ 关于「只随机未完成题」

这个功能专门处理重新开启学习计划时很容易踩坑的问题。

假设你以前已经完成过一次:

LeetCode 热题 100
100 / 100

后来你重新开启了一轮:

LeetCode 热题 100
0 / 100

插件不会因为你以前 AC 过这些题,就把当前这一轮误判成全部完成。

它会尽量按照当前正在进行的这一轮学习计划判断完成状态:

以前 AC 过
≠
当前这一轮已经完成

这样重新刷 Hot 100、LeetCode 75 或 SQL 50 时也可以正常使用。

🔁 避免近期重复

可以设置最近多少道题不重复:

关闭
3 道
5 道
10 道
20 道

例如设置为 5 道,最近随机过的 5 道题会暂时从候选池中排除。

不同学习计划会分别记录,Hot 100 的记录不会影响 SQL 50。

⚡ v2.6 性能优化

v2.6 主要减少随机等待时间:

  • 题单本地缓存 6 小时
  • 完成状态按批并行查询
  • 30 秒内连续随机可复用短期状态缓存
  • 手动「只刷新题单」可以强制绕过缓存
  • 如果未完成状态读取失败,不会把全部题目误当成未完成

详见 TEST_REPORT.md

🔐 隐私说明

这个插件不会要求输入力扣账号或密码。

它只使用浏览器里已经存在的 leetcode.cn 登录状态读取学习计划。

不会:

❌ 上传 Cookie
❌ 上传账号信息
❌ 上传做题记录
❌ 上传学习计划
❌ 连接第三方服务器

插件访问范围仅限:

https://leetcode.cn/*

随机记录、缓存和设置都保存在浏览器本地。

🛠 技术信息

  • Browser Extension Manifest V3
  • 原生 JavaScript / HTML / CSS
  • chrome.storage.local 保存题单缓存和随机历史
  • chrome.storage.sync 保存用户偏好设置
  • 仅请求 https://leetcode.cn/*

主要文件:

manifest.json   扩展配置
background.js   标签页调度、缓存、打开题目
content.js      读取学习计划与题单数据
popup.js        弹窗交互与随机逻辑
popup.html      插件弹窗
popup.css       弹窗样式

🧪 本地检查

可以使用 Node.js 对主要脚本做语法检查:

node --check background.js
node --check content.js
node --check popup.js

发布前建议真实浏览器验证:

  • 任意学习计划第一次随机
  • 30 秒内连续随机 3 到 5 次
  • 等待 30 秒后再次随机
  • 「只随机未完成题」开 / 关
  • 「新标签页打开」开 / 关
  • AC 一道题后刷新题单并确认完成状态变化

💡 后续计划

  • 按简单 / 中等 / 困难随机
  • 指定题型随机
  • 随机后显示本次抽题记录
  • 今日随机刷题数量
  • 每日随机挑战模式
  • 支持更多题单筛选
  • 更方便的快捷键

欢迎提 Issue 或 PR。

🤝 反馈与贡献

如果你也在使用力扣学习计划,并且觉得:

学习计划如果能随机刷就好了。

那这个插件应该正好适合你。

遇到 bug 时,建议附带:

  • 浏览器版本
  • 插件版本
  • 学习计划名称
  • 问题截图
  • 是否开启「只随机未完成题」

如果这个项目帮到了你,欢迎 Star。
有人用的话,我会继续维护。

📄 License

MIT

About

解决 LeetCode 学习计划无法随机刷题的问题:从当前计划中随机抽题,也可只抽未完成题。支持 Hot 100、LeetCode 75、SQL 50 等题单。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages