Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PPsteven/leetcode-tool

Repository files navigation

leetcode-tool

Leetcode 刷题助手 Leetcode Assistant

Features

一个GO CLI命令行工具辅助离线刷题记录。

  • 离线可使用
  • 自动创建Leetcode题目和代码模板
  • 按题目tag整理题目
  • 接入Openai辅助答题

题目分类

What's Next

  • 接入notion api,使用notion管理做题进度

Install

# homebrew
$ brew tap ppsteven/homebrew-tap
$ brew install ppsteven/homebrew-tap/leetcode-tool
$ leetcode-tool help

Getting Started

1. 新建配置文件 Config

首先在创建一个做题目录,在目录下创建 .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",
 "prompt": "您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答\nSETP1. 给出算法的归类,如递归,栈\nSETP2. 若是存在暴力解法,给出思路和复杂度\nSETP3. 给出最优解法和复杂度\nSETP4. 代码实现,使用 {{ .Lang }} 语言,代码带注释和测试样例。\n\n{{ .Problem }}"
 }
}
  • lang: 当前支持语言 go/py3/ts/java
  • env: 界面语言 cn 中文站/ en 英文站
  • gpt: 支持gpt对题目提示,在没有思路的时候辅助解题
    • api_key: openai key
    • model: openai model
    • prompt: 自定义提示词,双花括号代表的是变量,在生成提示词的时候会被替换为字符串
      • {{ .TextLang }} 根据env决定,en:英文,cn:中文
      • {{ .Lang }} 编程语言
      • {{ .Problem }} 题目内容,必须加上
      • prompt 如果不填写的话,就使用如下默认prompt提示词模板
您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答
SETP1. 给出算法的归类,如递归,栈
SETP2. 若是存在暴力解法,给出思路和复杂度
SETP3. 给出最优解法和复杂度
SETP4. 代码实现,使用 {{ .Lang }} 语言,代码带注释和测试样例。
{{ .Problem }}

2. 开始做题

# 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. 提交代码

3. 同步至Notion

.leetcode.json 中填写好 notion_keydatabase_idpage_id 后,开启更新。

注意,当第一次使用尚未创建数据库时, database_id 为空,page_id 有值时,会在 page_id 对应的父页面下自动创建数据库。

将终端显示的 database_id 填入配置文件后,就更新对应数据库。

$ leetcode-tool sync --notion
2024年05月05日 00:56:43 Create Database: e7086c88f6504623956d1271b70aa2b4, Please add the database_id in the config file
2024年05月05日 00:56:43 Visited Link: https://www.notion.so/e7086c88f6504623956d1271b70aa2b4
sync leetcode record to notion, progress: 51/52%

Support Language 支持语言

  • Golang go
  • Typescript ts
  • Javascript js
  • Python3 py3
  • Java java

Usage

https://blog.cong.moe/post/2020-11-30-leetcode_tool

新建题目代码

leetcode-tool new [<flags>] <number>

number 为网页上显示的题目序号, 例如: leetcode-tool new 1 创建第一题的代码.

此命令会创建一个文件夹和三个文件, 分别是: 代码文件, 测试文件, 题目描述文件.

题目信息从 leetcode 拉取, 并生成一些元信息供更新命令分类更新题目完成状态.

查看题目信息

leetcode-tool meta <number>

展示某道题目一些信息.

更新题目状态

leetcode-tool update

根据已完成题目类别更新 toc 文件夹下的算法分类状态.

ChatGPT 辅助提示解题思路

leetcode-tool gpt <number>

更新 leetcode 分类(不建议使用)

leetcode-tool tags

从 leetcode 网站拉取最新分类, 并创建 toc 对应文件, 一般不需要运行.

同步 notion

leetcode-tool sync --notion

重置项目

假如想要重新从零开始, 或者你的项目是基于别人项目 fork 的, 可以使用如下方式清理已有题解:

# 1. 删除所有题解文件
rm -rf solve/*
# 2. 重新构建 toc 文件, -f 参数会强制覆盖
leetcode-tool tags -f
# 2.1 假如你还保留了部分题解, 还需要更新下题目状态
leetcode-tool update

Troublesome

离线创建题目依赖 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

为什么需要这个工具

  1. leetcode 网页 IDE 太弱了, 我需要本地解题
  2. 网页题解难以沉淀, 例如一道题我希望整理多种解法
  3. GitHub 易于分享题解
  4. 根据自己需要, 组织题目做专题之类的总结

鸣谢

https://github.com/zcong1993/leetcode-tool

此项目已多年不更新,本代码在Fork此仓库的基础上添加了如下功能:

  • 离线下载了 Leetcode 3400+题,保证了在Leetcode接口发生改变后依然可以运行。
  • 优化了部分代码逻辑
  • 接入了Openai辅助解题

Leetcode 题目爬虫使用Python实现,详见 scripts 文件夹,代码参考:https://github.com/bunnyxt/lcid

使用此工具的项目

License

MIT © ppsteven

About

一个让你更方便刷题的工具 Leetcode Assistant

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

AltStyle によって変換されたページ (->オリジナル) /