|
| 1 | +# Leetcode practice |
| 2 | + |
| 3 | +**中文文档**|[English Document](./README.md)|[日本語の文書](./README_JP.md) |
| 4 | + |
| 5 | +## I.项目信息 |
| 6 | + |
| 7 | +### 1.简介 |
| 8 | + |
| 9 | +一句话介绍:“在编辑器中开始练习你的`leetcode`每日一题!” |
| 10 | + |
| 11 | +如果,你想要在编辑器中编写你的题解... |
| 12 | + |
| 13 | +如果,你想要简单快速的获取每日一题... |
| 14 | + |
| 15 | +如果,你想要创建你自己的题解仓库... |
| 16 | + |
| 17 | +那么,`leetcode-practice`将满足你的一切想要! |
| 18 | + |
| 19 | +### 2.预览 |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | +## II.使用须知 |
| 24 | + |
| 25 | +### 0. 预备条件 |
| 26 | + |
| 27 | +| 工具 | 备注 | |
| 28 | +|----------|:----------------:| |
| 29 | +| nodejs | lts | |
| 30 | +| git | lts | |
| 31 | +| computer | 能够运行chrome和代码编辑器 | |
| 32 | +| patience | 一颗能够坚持刷题的心 | |
| 33 | + |
| 34 | +> note: nodejs:[nodejs安装向导](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs) |
| 35 | +> |
| 36 | +> git:[git下载地址](https://git-scm.com/downloads) |
| 37 | +
|
| 38 | +### 1. 我可以怎么用? (三种方案供你选择) |
| 39 | +#### 方案A.脚手架 CLI (推荐) |
| 40 | +此方案是最为推荐的使用方案,通过脚手架指令`lc`、`lk`、`lf`自由灵活的在任意的目录中创建并检查你的题解。 |
| 41 | + |
| 42 | +> 使用预览 |
| 43 | +
|
| 44 | +#### 方案B.模板项目 Template project (支持) |
| 45 | + |
| 46 | +如果你想要快速的创建一个自己的题解库,可以使用我们的模板项目进行快速的创建github项目,并且获得完善的初始化内容。 |
| 47 | + |
| 48 | +> 使用预览 |
| 49 | +
|
| 50 | +#### 方案C.插件 Plugin (支持,待开发) |
| 51 | + |
| 52 | +如果你想在编辑器中通过点击操作按钮来创建题解,可以使用我们的编辑器插件(计划支持`WebStorm`和`VSCode`)在你的编辑器中创建题解。 |
| 53 | + |
| 54 | +> 使用预览 |
| 55 | +
|
| 56 | +### 2. 我应该怎么用?(三种方案的详细的安装和使用教程) |
| 57 | +#### 方案A.脚手架 CLI |
| 58 | + |
| 59 | +##### 1.安装 |
| 60 | + |
| 61 | +你可以使用任意一款npm包管理软件(例如*`*npm*`*,*`*yarn*`*,*`*pnpm*`*等)的在`项目`中或者`全局`进行安装。 |
| 62 | + |
| 63 | +```shell |
| 64 | +# 示例:全局安装 |
| 65 | +# 使用npm进行全局安装 |
| 66 | +npm install -g leetcode-practice |
| 67 | +# 使用pnpm进行安装 |
| 68 | +pnpm install -g leetcode-practice |
| 69 | +# 使用yarn进行安装 |
| 70 | +yarn global install leetcode-practice |
| 71 | + |
| 72 | +# 示例:在项目中安装 |
| 73 | +yarn add --dev leetcode-practice |
| 74 | +``` |
| 75 | + |
| 76 | +> 提示: 在项目中安装和全局安装的区别在于脚手架的作用范围不同。如果在项目中安装,那么指令只能在该项目内使用,而在其他项目中(未安装leetcode-practice包的情况下)则无法使用指令。而全局安装则允许在任何目录下使用指令。 |
| 77 | +
|
| 78 | +##### 2.使用 |
| 79 | + |
| 80 | +在这里给大家简单介绍一下每日一题的`创建`和`检查`,还有关键词搜索的使用方式,最为详细具体的指令和参数请参照[KFC及其关键参数说明 ](#3-kfc及其关键参数说明-三种方案通用的参考手册) |
| 81 | + |
| 82 | +###### 2.1 创建题目 |
| 83 | + |
| 84 | +在指令作用范围中,执行指令`lc`来进行创建今天的每日一题: |
| 85 | + |
| 86 | +```shell |
| 87 | +# 移动到我的工作目录中 |
| 88 | +cd my-workspace |
| 89 | +# 创建每日一题 |
| 90 | +lc |
| 91 | +``` |
| 92 | + |
| 93 | +当看到提示: |
| 94 | + |
| 95 | +```shell |
| 96 | +MODE: today |
| 97 | +题目[299.猜数字游戏]获取成功! |
| 98 | +题目文件地址为:/my-workspace/299.bulls-and-cows/question.js |
| 99 | +``` |
| 100 | + |
| 101 | +你的题目就已经创建完成了!可以在编辑器中愉快的解题了! |
| 102 | + |
| 103 | +###### 2.2 检查题目 |
| 104 | + |
| 105 | +当你完成解题代码的编写,可以通过`lk`指令进行简单的检查题解! |
| 106 | + |
| 107 | +```shell |
| 108 | +# lk指令和lc指令的模式是对应的,不带参数的时候意为检查今日题目 |
| 109 | +lk |
| 110 | +``` |
| 111 | + |
| 112 | +你会得到如下提示信息: |
| 113 | + |
| 114 | +```shell |
| 115 | +MODE: today |
| 116 | +题目[299.猜数字游戏]检测结果: |
| 117 | +┌────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┬────────────┬────────────┐ |
| 118 | +│ 测试结果 │ 预期结果 │ 执行结果 │ 执行用时 │ 内存占用 │ |
| 119 | +├────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼────────────┼────────────┤ |
| 120 | +│ 通过 │ "1A3B" │ "1A3B" │ 0.1361ms │ 2.79 KB │ |
| 121 | +│ 通过 │ "1A1B" │ "1A1B" │ 0.0623ms │ 2.93 KB │ |
| 122 | +└────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴────────────┴────────────┘ |
| 123 | +点击跳转到题目提交: https://leetcode.cn/problems/bulls-and-cows/ |
| 124 | +``` |
| 125 | + |
| 126 | +你可以看到`测试结果`、`预期结果`、`执行结果`、`执行用时`以及`内存占用`信息。 |
| 127 | + |
| 128 | +###### 2.3 搜索题目 |
| 129 | + |
| 130 | +关键词搜索是核心指令`lf`的一项基本功能,可以通过关键词的形式获取题目信息,并快速的选择创建。 |
| 131 | + |
| 132 | +```shell |
| 133 | +# lf指令是一个完全交互式的指令 按其中的提示进行输入操作即可获取自己想要的信息 |
| 134 | +lf |
| 135 | +``` |
| 136 | + |
| 137 | +以下演示获取`两数之和`这个题目如何通过关键词搜索创建: |
| 138 | + |
| 139 | +```shell |
| 140 | +# 在输入关键词 两数 之后 按下回车 会出现所有和两数相关的题目 按键盘的上下键进行选择 回车进行确认 |
| 141 | +? 请选择查找的模式? 关键词搜索 |
| 142 | +? 请输入关键词 两数 |
| 143 | +? 请选择题目 |
| 144 | +LCR 025.两数相加 II |
| 145 | +2.两数相加 |
| 146 | +29.两数相除 |
| 147 | +❯ 1.两数之和 |
| 148 | +LCR 006.两数之和 II - 输入有序数组 |
| 149 | +445.两数相加 II |
| 150 | +LCR 056.两数之和 IV - 输入二叉搜索树 |
| 151 | +(Use arrow keys to reveal more choices) |
| 152 | + |
| 153 | +# 确认后的会进行题目创建,返回成功信息 |
| 154 | +? 请选择查找的模式? 关键词搜索 |
| 155 | +? 请输入关键词 两数 |
| 156 | +? 请选择题目 1.两数之和 |
| 157 | +1 |
| 158 | +MODE: identity |
| 159 | +题目[1.两数之和]获取成功! |
| 160 | +题目文件地址为:fill:///my-workspace/1.two-sum/question.js:36 |
| 161 | +``` |
| 162 | + |
| 163 | +> 提示: 在创建完成的时候会输出一个可以点击跳转的文件地址,如果在编辑器的控制台中点击,会直接打开对应的文件的函数开始位置。 |
| 164 | +
|
| 165 | +#### 方案B.模板项目 Template project |
| 166 | + |
| 167 | +##### 1.创建模板项目 |
| 168 | + |
| 169 | +1. 在`github`中打开我们的模板项目[leetcodePracticeTemplate](https://github.com/EternalHeartTeam/LeetcodePracticeTemplate)。 |
| 170 | +2. `点击`右上角的`Use this template`,选择[`Create a new repository`](https://github.com/new?template_name=LeetcodePracticeTemplate&template_owner=EternalHeartTeam)。 |
| 171 | +3. 就像创建一个正常的仓库一样去填写信息即可。 |
| 172 | +4. 等待...然后完成,从此你就有了一个自己的`leetcode题解仓库`,并且长期受`leetcode-practice`官方支持! |
| 173 | + |
| 174 | +> 填充创建过程图 |
| 175 | +
|
| 176 | +##### 2. 使用模板项目 |
| 177 | + |
| 178 | +###### 1. 拉取项目,并进行初始化依赖。 |
| 179 | + |
| 180 | +e.g. 以我个人的项目为例 |
| 181 | + |
| 182 | +```shell |
| 183 | +# 这里只是示例,请拉取自己的项目(在你看到这进行尝试的时候,此项目可能已经被清理,正常现象请勿疑惑) |
| 184 | +git clone git@github.com:wh131462/my-leetcode-practice.git |
| 185 | +# 移动进项目目录 |
| 186 | +cd my-leetcode-practice |
| 187 | +# 初始化 |
| 188 | +npm i |
| 189 | +``` |
| 190 | + |
| 191 | +###### 2. 在项目中的使用 |
| 192 | + |
| 193 | +在模板项目中使用`leetcode-practice`的方式有两种,一种是`项目内指令`的形式,一种是`npm脚本`的形式。接下来演示创建的过程,其他的指令用法和参数与脚手架一致,请参考[KFC及其关键参数说明](#3-kfc及其关键参数说明-三种方案通用的参考手册)部分。 |
| 194 | + |
| 195 | +```shell |
| 196 | +# 在项目的根目录下 执行npm run lc 创建今日一题,因为默认配置了 -d src 所以 会在 src 目录下进行创建 |
| 197 | +npm run lc |
| 198 | +# 也可以使用 yarn :任意一种你喜欢的包管理工具 |
| 199 | +yarn lc |
| 200 | +``` |
| 201 | + |
| 202 | +你也可以使用指令`lc`来创建,当然,你只能在项目中使用我们的脚本(如果你没有全局安装`leetcode-practice`的话)。 |
| 203 | +```shell |
| 204 | +# 使用lc 会在当前工作目录创建 如果 需要和脚本的表现保持一致(指在src目录下创建),请使用 -d src 参数 |
| 205 | +lc |
| 206 | +``` |
| 207 | + |
| 208 | +> 注意:在这里进行一下强调,项目内指令的说法是指指令的作用范围限制是当前的项目目录,也就是说在其他的目录,你尝试使用lc指令会发现不起作用。 |
| 209 | +> |
| 210 | +> 同样的,你也会发现在第一次安装好的时候,在项目内使用lc指令,也是不起作用的,这个时候需要关闭终端(terminal)再打开进行手动的刷新缓存。 |
| 211 | +> |
| 212 | +> npm脚本指在 package.json 中的 scripts 字段下封装的脚本指令。 |
| 213 | +
|
| 214 | +###### 3. 更新依赖 |
| 215 | + |
| 216 | +当你想要进行更新的时候,可以执行封装好的npm指令:`update`,可以帮你安装`最新版本(latest)`的`leetcode-practice`。 |
| 217 | + |
| 218 | +```shell |
| 219 | +# 使用任意一种包管理工具执行即可 |
| 220 | +npm run update |
| 221 | +# 当然你也可以自己执行指令 |
| 222 | +npm i --save-dev leetcode-practice |
| 223 | +``` |
| 224 | + |
| 225 | +#### 方案C.插件 Plugin (待开发) |
| 226 | + |
| 227 | +### 3. KFC及其关键参数说明 (三种方案通用的参考手册) |
| 228 | + |
| 229 | +#### [0].什么是KFC? |
| 230 | + |
| 231 | +`KFC`是一个简便记法,可以快速记忆我们的三个核心指令:`lk`,`lf`,`lc`。 |
| 232 | + |
| 233 | +| 指令 | 说明 | |
| 234 | +|----|--------------------------------------------------------| |
| 235 | +| lc | 核心创建指令,支持三种创建模式 ( 每日一题、指定题目、随机题目 ) 进行题目的创建 | |
| 236 | +| lk | 核心检查指令,支持三种模式对应的题目检测 | |
| 237 | +| lf | 核心查找指令,可以快捷的搜索你想要的题目,支持Hot100,关键词搜索,条件筛选等模式进行搜索题目并支持创建 | |
| 238 | + |
| 239 | +#### [1].lc |
| 240 | + |
| 241 | +| 简单参数 | 完整参数 | 说明 | |
| 242 | +|-----------|--------------|------------------| |
| 243 | +| 无参数/`-t` | `--today` | 创建今日的每日一题 | |
| 244 | +| 题目编号/`-i` | `--identity` | 创建指定编号对应的题目 | |
| 245 | +| `-r` | `--random` | 创建当前目录下未出现过的随机题目 | |
| 246 | +| `-e` | `--easy` | 交互式创建题目 | |
| 247 | + |
| 248 | +#### [2].lk |
| 249 | + |
| 250 | +| 简单参数 | 完整参数 | 说明 | |
| 251 | +|-----------|--------------|--------------------------------------| |
| 252 | +| 无参数/`-t` | `--today` | 检查今日的每日一题 | |
| 253 | +| 题目编号/`-i` | `--identity` | 检查指定编号对应的题目,会检查当前工作目录下的是否存在指定id对应的题目 | |
| 254 | +| `-r` | `--random` | 检查上一次使用随机模式创建的题目 | |
| 255 | +| `-e` | `--easy` | 交互式的根据提示去检查对应的题目 | |
| 256 | + |
| 257 | +> 注意: 当你检测的时候需要注意,使用什么模式去检查,请确保你已经执行过对应模式的创建操作。 |
| 258 | +> 指定编号模式除外,因为会优先检查指定的id是否在当前工作目录存在。 |
| 259 | +
|
| 260 | +#### [3].lf |
| 261 | + |
| 262 | +| 简单参数 | 完整参数 | 说明 | |
| 263 | +|------|------|---------------------------| |
| 264 | +| 无参数 | 无 | 进入交互式查询,可根据提示搜索或筛选题目并创建题目 | |
| 265 | + |
| 266 | +#### [4].通用参数 |
| 267 | + |
| 268 | +| 简单参数 | 完整参数 | 说明 | |
| 269 | +|------------------|---------------------------|---------------------------------------------------------------------------| |
| 270 | +| `-d <directory>` | `--directory <directory>` | 指定工作目录(是一个当前执行目录的相对地址),会影响创建和检查 | |
| 271 | +| `-V` | `--version` | 检查版本号 | |
| 272 | +| `-h` | `--help` | 获取帮助信息 | |
| 273 | +| `-l [language]` | `--language [language]` | 不指定参数为获取当前的语言环境(默认为javascript),指定参数可以设置语言环境为对应语言(如`-l java`可以指定语言环境为java) | |
| 274 | +| `-u` | `--update` | 更新当前脚本或者依赖 | |
| 275 | + |
| 276 | +> 注意:通用参数指三个脚本`lk`,`lf`,`lc`都支持的参数,使用上的语义一般来说是相同的,但是可能有些指令上的行为含义会有所不同(比如`lc`指令指定`-d`参数是指`在指定目录中创建题目`,而`lk`指令指定`-d`参数就是指`在指定目录创建题目`)。 |
| 277 | +
|
| 278 | +## III.其他信息 |
| 279 | + |
| 280 | +### 1. 贡献者们 |
| 281 | + |
| 282 | +项目的开发和完善离不开这些贡献者的辛勤付出,在此真诚感谢各位大佬的付出! |
| 283 | + |
| 284 | +<a href="https://github.com/EternalHeartTeam/leetcode-practice/graphs/contributors" target="_blank"><img src="https://raw.githubusercontent.com/EternalHeartTeam/leetcode-practice/svg/images/contributors.png" /></a> |
| 285 | + |
| 286 | +### 2.使用反馈 |
| 287 | + |
| 288 | +如果你有使用上的问题需要解惑,或者一些好的建议想要提出,可以加我们的使用反馈群进行反馈! |
| 289 | + |
| 290 | +在群里和开发者面对面的交流,希望我们能产生共鸣,迸发出新的火花! |
| 291 | + |
| 292 | + |
| 293 | + |
| 294 | +### 3.Star趋势图 |
| 295 | + |
| 296 | +[](https://star-history.com/#EternalHeartTeam/leetcode-practice&Date) |
0 commit comments