Leetcode practice
写在开头:
如果你是前端,并且需要或者喜欢刷题,那么可以试试我们的工具,从发文到现在(3.12)经过几天的迭代,基本上能够满足大部分人的刷题需求(除了暂时还不支持提交).
目前项目已经从个人项目转成团队项目,如果你想参与开源项目的开发,第一视角见证我们的成长,可以加入我们的组织一起把这个项目做好.(联系方式在项目说明中)
目前发现的问题有: 在Mac 10.x.x 版本中无法运行. 所以如果你的系统是Mac并且版本号比较低,暂时无法使用,我们也在积极尝试解决这个问题中.
下列内容取自github项目的中文文档.
可以在我们的项目leetcode-practice中直接查看!
I.项目信息
1.简介
一句话介绍:“在编辑器中开始练习你的leetcode每日一题!”
如果,你想要在编辑器中编写你的题解...
如果,你想要简单快速的获取每日一题...
如果,你想要创建你自己的题解仓库...
那么,leetcode-practice将满足你的一切想要!
2.预览
II.使用须知
0. 预备条件
| 工具 | 备注 |
|---|---|
| nodejs | lts |
| git | lts |
| computer | 能够运行chrome和代码编辑器 |
| patience | 一颗能够坚持刷题的心 |
note: nodejs:nodejs安装向导
git:git下载地址
1. 我可以怎么用? (三种方案供你选择)
方案A.脚手架 CLI (推荐)
此方案是最为推荐的使用方案,通过脚手架指令lc、lk、lf自由灵活的在任意的目录中创建并检查你的题解。
使用预览
方案B.模板项目 Template project (支持)
如果你想要快速的创建一个自己的题解库,可以使用我们的模板项目进行快速的创建github项目,并且获得完善的初始化内容。
使用预览
方案C.插件 Plugin (支持,待开发)
如果你想在编辑器中通过点击操作按钮来创建题解,可以使用我们的编辑器插件(计划支持WebStorm和VSCode)在你的编辑器中创建题解。
使用预览
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.创建模板项目
- 在
github中打开我们的模板项目leetcodePracticeTemplate。 点击右上角的Use this template,选择Create a new repository。- 就像创建一个正常的仓库一样去填写信息即可。
- 等待...然后完成,从此你就有了一个自己的
leetcode题解仓库,并且长期受leetcode-practice官方支持!
填充创建过程图
2. 使用模板项目
1. 拉取项目,并进行初始化依赖。
e.g. 以我个人的项目为例
# 这里只是示例,请拉取自己的项目(在你看到这进行尝试的时候,此项目可能已经被清理,正常现象请勿疑惑)
git clone git@github.com: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 --save-dev leetcode-practice
方案C.插件 Plugin (待开发)
3. KFC及其关键参数说明 (三种方案通用的参考手册)
[0].什么是KFC?
KFC是一个简便记法,可以快速记忆我们的三个核心指令:lk,lf,lc。
| 指令 | 说明 |
|---|---|
| lc | 核心创建指令,支持三种创建模式 ( 每日一题、指定题目、随机题目 ) 进行题目的创建 |
| lk | 核心检查指令,支持三种模式对应的题目检测 |
| lf | 核心查找指令,可以快捷的搜索你想要的题目,支持Hot100,关键词搜索,条件筛选等模式进行搜索题目并支持创建 |
[1].lc
| 简单参数 | 完整参数 | 说明 |
|---|---|---|
无参数/-t | --today | 创建今日的每日一题 |
题目编号/-i | --identity | 创建指定编号对应的题目 |
-r | --random | 创建当前目录下未出现过的随机题目 |
-e | --easy | 交互式创建题目 |
[2].lk
| 简单参数 | 完整参数 | 说明 |
|---|---|---|
无参数/-t | --today | 检查今日的每日一题 |
题目编号/-i | --identity | 检查指定编号对应的题目,会检查当前工作目录下的是否存在指定id对应的题目 |
-r | --random | 检查上一次使用随机模式创建的题目 |
-e | --easy | 交互式的根据提示去检查对应的题目 |
注意: 当你检测的时候需要注意,使用什么模式去检查,请确保你已经执行过对应模式的创建操作。 指定编号模式除外,因为会优先检查指定的id是否在当前工作目录存在。
[3].lf
| 简单参数 | 完整参数 | 说明 |
|---|---|---|
| 无参数 | 无 | 进入交互式查询,可根据提示搜索或筛选题目并创建题目 |
[4].通用参数
| 简单参数 | 完整参数 | 说明 |
|---|---|---|
-d <directory> | --directory <directory> | 指定工作目录(是一个当前执行目录的相对地址),会影响创建和检查 |
-V | --version | 检查版本号 |
-h | --help | 获取帮助信息 |
-l [language] | --language [language] | 不指定参数为获取当前的语言环境(默认为javascript),指定参数可以设置语言环境为对应语言(如-l java可以指定语言环境为java) |
-u | --update | 更新当前脚本或者依赖 |
注意:通用参数指三个脚本
lk,lf,lc都支持的参数,使用上的语义一般来说是相同的,但是可能有些指令上的行为含义会有所不同(比如lc指令指定-d参数是指在指定目录中创建题目,而lk指令指定-d参数就是指在指定目录创建题目)。
III.其他信息
1. 贡献者们
项目的开发和完善离不开这些贡献者的辛勤付出,在此真诚感谢各位大佬的付出!
2.使用反馈
如果你有使用上的问题需要解惑,或者一些好的建议想要提出,可以加我们的使用反馈群进行反馈!
在群里和开发者面对面的交流,希望我们能产生共鸣,迸发出新的火花!