Leetcode 刷题助手 Leetcode Assistant
一个GO CLI命令行工具辅助离线刷题记录。
- 离线可使用
- 自动创建Leetcode题目和代码模板
- 按题目tag整理题目
- 接入Openai辅助答题
- 接入notion api,使用notion管理做题进度
# homebrew
$ brew tap ppsteven/homebrew-tap
$ brew install ppsteven/homebrew-tap/leetcode-tool
$ leetcode-tool help
首先在创建一个做题目录,在目录下创建 .leetcode.json
配置文件.
{
"lang": "go/py3/ts/java", // 项目全局语言, 配置后 new 命令 --lang 参数可省略, 目前支持 go ts js py3 java
"env": "en/cn",
"gpt": {
"api_key": "sk-xxx",
"model": "gpt-3.5-turbo"
}
}
- lang: 当前支持语言 go/py3/ts/java
- env: 界面语言 cn 中文站/ en 英文站
- gpt: 支持gpt对题目提示,在没有思路的时候辅助解题。
- api_key: openai key
- model: openai model
# 1. 新建一个题目
$ leetcode-tool new 1
# 2. 写出题解, 和测试代码
...
下面是自动生成的题目注释,通过编辑注释信息,帮助我们分类该题的解法。
/**
* @index 1
* @title Two Sum
* @difficulty EASY
* @tags array,hash-table
* @draft false
* @link https://leetcode.cn/problems/two-sum/description/
* @frontendId 1
* @solved false
*/
- index: 题目编号
- title: 题目名称
- difficulty: 题目难易程度
- tags: 题目标签默认为Leetcode标签,同时也可以自定义标签
- draft: 是否草稿,true 则不会在update的时候对该题进行分类
- link: 题目链接
- frontendId: 题目编号
- solved: 是否解决
# 3. 更新 toc 文件
$ leetcode-tool update
# 4. 提交代码
- Golang go
- Typescript ts
- Javascript js
- Python3 py3
- Java java
leetcode-tool new [<flags>] <number>
number 为网页上显示的题目序号, 例如: leetcode-tool new 1
创建第一题的代码.
此命令会创建一个文件夹和三个文件, 分别是: 代码文件, 测试文件, 题目描述文件.
题目信息从 leetcode 拉取, 并生成一些元信息供更新命令分类更新题目完成状态.
leetcode-tool meta <number>
展示某道题目一些信息.
leetcode-tool update
根据已完成题目类别更新 toc
文件夹下的算法分类状态.
leetcode-tool gpt <number>
leetcode-tool tags
从 leetcode 网站拉取最新分类, 并创建 toc
对应文件, 一般不需要运行.
假如想要重新从零开始, 或者你的项目是基于别人项目 fork 的, 可以使用如下方式清理已有题解:
# 1. 删除所有题解文件
rm -rf solve/*
# 2. 重新构建 toc 文件, -f 参数会强制覆盖
leetcode-tool tags -f
# 2.1 假如你还保留了部分题解, 还需要更新下题目状态
leetcode-tool update
离线创建题目依赖 problems.json
文件,默认在本地无法获取该文件的时候,会从 PPsteven/leetcode-tool/problems.json 下载。
但是国内的用户可能由于网络原因无法下载,此时需要手动下载存放在吧本地目录中。
$ go run cmd/main.go new 1
file problems.json not exists, start downloading from https://raw.githubusercontent.com/PPsteven/leetcode-tool/master/problems.json
# 手动下载存放在代码编写目录
$ wget https://raw.githubusercontent.com/PPsteven/leetcode-tool/master/problems.json
- leetcode 网页 IDE 太弱了, 我需要本地解题
- 网页题解难以沉淀, 例如一道题我希望整理多种解法
- GitHub 易于分享题解
- 根据自己需要, 组织题目做专题之类的总结
此项目已多年不更新,本代码在Fork此仓库的基础上添加了如下功能:
- 离线下载了 Leetcode 3400+题,保证了在Leetcode接口发生改变后依然可以运行。
- 优化了部分代码逻辑
- 接入了Openai辅助解题
Leetcode 题目爬虫使用Python实现,详见 scripts
文件夹,代码参考:https://github.com/bunnyxt/lcid
MIT © ppsteven