Skip to content

Latest commit

 

History

History
301 lines (206 loc) · 15 KB

README_CN.md

File metadata and controls

301 lines (206 loc) · 15 KB

Leetcode practice npm build status

中文 · English · 日本語

I.项目信息

1.简介

一句话介绍:“在编辑器中开始练习你的leetcode每日一题!”

如果,你想要在编辑器中编写你的题解...

如果,你想要简单快速的获取每日一题...

如果,你想要创建你自己的题解仓库...

那么,leetcode-practice将满足你的一切想要!

2.预览

CLI-lc

II.使用须知

0. 预备条件

工具 备注
nodejs lts
git lts
patience 一颗能够坚持刷题的心

1. 我可以怎么用? (三种方案供你选择)

方案A.脚手架 CLI (推荐)

此方案是最为推荐的使用方案,通过脚手架指令lclklf自由灵活的在任意的目录中创建并检查你的题解。

使用预览

方案B.模板项目 Template project (支持)

如果你想要快速的创建一个自己的题解库,可以使用我们的模板项目进行快速的创建github项目,并且获得完善的初始化内容。

使用预览

方案C.插件 Plugin (支持,待开发)

如果你想在编辑器中通过点击操作按钮来创建题解,可以使用我们的编辑器插件(计划支持WebStormVSCode)在你的编辑器中创建题解。

使用预览

2. 我应该怎么用?(三种方案的详细的安装和使用教程)

方案A.脚手架 CLI

1.安装

你可以使用任意一款npm包管理软件(例如npm,yarn,pnpm等)的在项目中或者全局进行安装。

# 示例:全局安装
# 使用npm进行全局安装
npm install -g leetcode-practice
# 使用pnpm进行安装
pnpm install -g leetcode-practice
# 使用yarn进行安装
yarn global install leetcode-practice

# 示例:在项目中安装
yarn add --dev leetcode-practice

提示: 在项目中安装和全局安装的区别在于脚手架的作用范围不同。如果在项目中安装,那么指令只能在该项目内使用,而在其他项目中(未安装leetcode-practice包的情况下)则无法使用指令。而全局安装则允许在任何目录下使用指令。

2.使用

在这里给大家简单介绍一下每日一题的创建检查,还有关键词搜索的使用方式,最为详细具体的指令和参数请参照KFC及其关键参数说明

2.1 创建题目

在指令作用范围中,执行指令lc来进行创建今天的每日一题:

# 移动到我的工作目录中
cd my-workspace
# 创建每日一题
lc

当看到提示:

MODE: today
题目[299.猜数字游戏]获取成功!
题目文件地址为:/my-workspace/299.bulls-and-cows/question.js

你的题目就已经创建完成了!可以在编辑器中愉快的解题了!

2.2 检查题目

当你完成解题代码的编写,可以通过lk指令进行简单的检查题解!

# lk指令和lc指令的模式是对应的,不带参数的时候意为检查今日题目
lk

你会得到如下提示信息:

MODE: today
题目[299.猜数字游戏]检测结果:
┌────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┬────────────┬────────────┐
│  测试结果  │                 预期结果                    │                 执行结果                  │  执行用时    │  内存占用   │
├────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼────────────┼────────────┤
│    通过    │                  "1A3B""1A3B"                  │  0.1361ms  │  2.79 KB   │
│    通过    │                  "1A1B""1A1B"                  │  0.0623ms  │  2.93 KB   │
└────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴────────────┴────────────┘
点击跳转到题目提交: https://leetcode.cn/problems/bulls-and-cows/

你可以看到测试结果预期结果执行结果执行用时以及内存占用信息。

2.3 搜索题目

关键词搜索是核心指令lf的一项基本功能,可以通过关键词的形式获取题目信息,并快速的选择创建。

# lf指令是一个完全交互式的指令 按其中的提示进行输入操作即可获取自己想要的信息
lf

以下演示获取两数之和这个题目如何通过关键词搜索创建:

# 在输入关键词 两数 之后 按下回车 会出现所有和两数相关的题目 按键盘的上下键进行选择 回车进行确认
? 请选择查找的模式? 关键词搜索
? 请输入关键词 两数
? 请选择题目
LCR 025.两数相加 II
2.两数相加
29.两数相除
❯ 1.两数之和
LCR 006.两数之和 II - 输入有序数组
445.两数相加 II
LCR 056.两数之和 IV - 输入二叉搜索树
(Use arrow keys to reveal more choices)

# 确认后的会进行题目创建,返回成功信息
? 请选择查找的模式? 关键词搜索
? 请输入关键词 两数
? 请选择题目 1.两数之和
1
MODE: identity
题目[1.两数之和]获取成功!
题目文件地址为:fill:///my-workspace/1.two-sum/question.js:36

提示: 在创建完成的时候会输出一个可以点击跳转的文件地址,如果在编辑器的控制台中点击,会直接打开对应的文件的函数开始位置。

方案B.模板项目 Template project

1.创建模板项目
  1. github中打开我们的模板项目leetcodePracticeTemplate
  2. 点击右上角的Use this template,选择Create a new repository
  3. 就像创建一个正常的仓库一样去填写信息即可。
  4. 等待...然后完成,从此你就有了一个自己的leetcode题解仓库,并且长期受leetcode-practice官方支持!

填充创建过程图

2. 使用模板项目
1. 拉取项目,并进行初始化依赖。

e.g. 以我个人的项目为例

# 这里只是示例,请拉取自己的项目(在你看到这进行尝试的时候,此项目可能已经被清理,正常现象请勿疑惑)
git clone [email protected]:wh131462/my-leetcode-practice.git
# 移动进项目目录
cd my-leetcode-practice
# 初始化
npm i
2. 在项目中的使用

在模板项目中使用leetcode-practice的方式有两种,一种是项目内指令的形式,一种是npm脚本的形式。接下来演示创建的过程,其他的指令用法和参数与脚手架一致,请参考KFC及其关键参数说明部分。

# 在项目的根目录下 执行npm run lc 创建今日一题,因为默认配置了 -d src 所以 会在 src 目录下进行创建
npm run lc
# 也可以使用 yarn :任意一种你喜欢的包管理工具
yarn lc

你也可以使用指令lc来创建,当然,你只能在项目中使用我们的脚本(如果你没有全局安装leetcode-practice的话)。

# 使用lc 会在当前工作目录创建 如果 需要和脚本的表现保持一致(指在src目录下创建),请使用 -d src 参数
lc

注意:在这里进行一下强调,项目内指令的说法是指指令的作用范围限制是当前的项目目录,也就是说在其他的目录,你尝试使用lc指令会发现不起作用。

同样的,你也会发现在第一次安装好的时候,在项目内使用lc指令,也是不起作用的,这个时候需要关闭终端(terminal)再打开进行手动的刷新缓存。

npm脚本指在 package.json 中的 scripts 字段下封装的脚本指令。

3. 更新依赖

当你想要进行更新的时候,可以执行封装好的npm指令:update,可以帮你安装最新版本(latest)leetcode-practice

# 使用任意一种包管理工具执行即可
npm run update
# 当然你也可以自己执行指令
npm i -D leetcode-practice

方案C.插件 Plugin (待开发)

3. KFC及其关键参数说明 (三种方案通用的参考手册)

[0].什么是KFC?

KFC是一个简便记法,可以快速记忆我们的三个核心指令:lk,lf,lc

指令 说明
lk 核心检查指令,支持三种模式对应的题目检测
lf 核心查找指令,可以快捷的搜索你想要的题目,支持Hot100,关键词搜索,条件筛选等模式进行搜索题目并支持创建
lc 核心创建指令,支持三种创建模式 ( 每日一题、指定题目、随机题目 ) 进行题目的创建

[1].lk

简单参数 完整参数 说明
无参数/-t --today 检查今日的每日一题
题目编号/-i <identity> --identity <identity> 检查指定编号对应的题目,会检查当前工作目录下的是否存在指定id对应的题目
-r --random 检查上一次使用随机模式创建的题目
-e --easy 交互式的根据提示去检查对应的题目

注意: 当你检测的时候需要注意,使用什么模式去检查,请确保你已经执行过对应模式的创建操作。 指定编号模式除外,因为会优先检查指定的id是否在当前工作目录存在。

[2].lf

简单参数 完整参数 说明
无参数 进入交互式查询,可根据提示搜索或筛选题目并创建题目

[3].lc

简单参数 完整参数 说明
无参数/-t --today 创建今日的每日一题
题目编号/-i <identity> --identity <identity> 创建指定编号对应的题目
-r --random 创建当前目录下未出现过的随机题目
-e --easy 交互式创建题目
-a --all 获取全部题目缓存,用于lf指令

[4].通用参数

简单参数 完整参数 说明
-d <directory> --directory <directory> 指定工作目录(是一个当前执行目录的相对地址),会影响创建和检查
-V --version 检查版本号
-v --ver 检查版本号信息并且输出一些额外的信息
-h --help 获取帮助信息
-l [language] --language [language] 不指定参数为获取当前的语言环境(默认为javascript),指定参数可以设置语言环境为对应语言(如-l java可以指定语言环境为java)
-u --update 更新当前脚本或者依赖

注意:通用参数指三个脚本lk,lf,lc都支持的参数,使用上的语义一般来说是相同的,但是可能有些指令上的行为含义会有所不同(比如lc指令指定-d参数是指在指定目录中创建题目,而lk指令指定-d参数就是指在指定目录创建题目)。

III.其他信息

1. 贡献者们

项目的开发和完善离不开这些贡献者的辛勤付出,在此真诚感谢各位大佬的付出!

2.如何贡献

如果你也有一颗热爱开源的心,想要为我们的开源事业贡献一份力量,那么请参考我们的贡献手册

3.使用反馈

如果你有使用上的问题需要解惑,或者一些好的建议想要提出,可以加我们的使用反馈群进行反馈!

在群里和开发者面对面的交流,希望我们能产生共鸣,迸发出新的火花!

反馈群

4.Star趋势图

Star History Chart