为了能在飞机上继续卷算法题,我做了一个本地版 Leetcode

237 阅读1分钟

Why?

最近因为出差,经常坐飞机。在飞机上很无聊,steamdeck 也玩腻了,就想刷刷题,但是 leetcode 却完全没有离线功能。。于是借助 ai 做了一个离线版的 leetcode。

链接: github.com/zxypro1/Off…

核心功能

  • 本地题库: 内置 20+ 道经典算法题目
  • AI 题目生成器: 使用 DeepSeek-V3 AI 生成无限自定义题目
  • 多语言支持: 支持 JavaScript、Python、Java、C++ 和 C 语言编码和测试
  • Monaco 代码编辑器: VS Code 级别的编辑体验
  • 即时测试: 立即运行测试并查看详细结果
  • 性能指标: 执行时间和内存使用量跟踪
  • 动态题目管理: 无需重新构建即可添加/编辑题目

技术栈

  • 前端: React 18 + Next.js 13 + TypeScript
  • UI 框架: Mantine v7 (现代 React 组件)
  • 代码编辑器: Monaco Editor (VS Code 引擎)
  • 代码执行: vm2 (安全的 JavaScript 沙箱)

自定义

添加新题目(无需重新构建!)🎯

应用支持在离线环境下添加/修改题目,无需重新构建!

  1. 编辑题目数据库: 在构建后的应用文件夹中打开 public/problems.json
  2. 添加你的题目: 按照 JSON 格式(详见 MODIFY-PROBLEMS-GUIDE.md
  3. 保存并刷新: 更改立即生效!

例子: 通过编辑 public/problems.json 添加新题目:

{
  "id": "reverse-string",
  "title": {
    "en": "Reverse String",
    "zh": "反转字符串"
  },
  "difficulty": "Easy",
  "tags": ["string"],
  "description": {
    "en": "Write a function that reverses a string.",
    "zh": "编写一个函数来反转字符串。"
  },
  "template": {
    "js": "function reverseString(s) {\n  // 你的代码\n}\nmodule.exports = reverseString;"
  },
  "tests": [
    { "input": "[\"h\",\"e\",\"l\",\"l\",\"o\"]", "output": "[\"o\",\"l\",\"l\",\"e\",\"h\"]" }
  ]
}

查看 MODIFY-PROBLEMS-GUIDE.md 获取完整说明

一些截图:

屏幕截图 2025-08-24 165202.png

屏幕截图 2025-08-24 165223.png

屏幕截图 2025-08-24 210533.png