# LeetCode CLI
Start `tmux`, `vim` and `leetcode-cli`. Practice as many questions as you can:-)
This tool is not affiliated with [LeetCode](https://leetcode.com).
## Install
### Mac OS X
```
brew install node
sudo easy_install leetcode-cli
```
### Linux
```
sudo apt install nodejs
sudo pip install leetcode-cli
```
## Usage
The most common commands are: `cd`, `ls`, `pull`, `cat`, `check`, `push`, `cheat`, `clear` and `/`.
```
$ leetcode-cli
(\_/)
=(^.^)=
(")_(")
243 solved 17 failed 523 todo
#:/> ?
cat - Show test case(s).
cd <tag|number> - Change problem(s).
cheat <number> - Find the best solution.
check - Test the solution.
chmod <language> - Change programming language.
clear - Clear screen.
find <keyword> - Find problems by keyword. Alias: /<keyword>.
limit <number> - Limit the number of problems.
login - Login into the online judge.
ls - Show problem(s).
print [keyword] - Print problems by keyword in HTML.
pull [*] - Pull latest solution(s). '*': all solved problems.
push - Submit the solution.
su <session> - Change session.
A tag can refer to a topic (e.g. array) or a company (e.g. amazon).
A keyword can be anything (including a tag).
Commands and options can be completed via <TAB>.
#:/>
```
Control+D to exit.
## Demo
At the root (`/`) level. `ls` lists all the topics. `#` is for problems without a topic.
```
#:/> ls
29 #
81 array
28 backtracking <- 28 problems todo in backtracking
5 binary-indexed-tree
35 binary-search
12 binary-search-tree
26 bit-manipulation
3 brainteaser
31 breadth-first-search
60 depth-first-search
...
13 sort
14 stack
62 string
3 topological-sort
53 tree
12 trie
21 two-pointers
9 union-find
242 solved 18 failed 523 todo
```
`cd <topic>` changes the current topic.
```
#:/> cd heap
#:/heap>
```
At the topic level, `ls` lists the problems by difficulty level and acceptance rate. Levels are seperated by a blank line. At each level, the problems are listed in the order of acceptance rate.
The marks: `*` means `todo`, `x` `failed`, none means `solved`.
```
#:/heap> ls
355 design-twitter <- the hardest
*719 find-k-th-smallest-pair-distance
*836 race-car
23 merge-k-sorted-lists
*218 the-skyline-problem
*803 cheapest-flights-within-k-stops
295 find-median-from-data-stream <- medium level
*895 shortest-path-to-get-all-keys
373 find-k-pairs-with-smallest-sums
...
215 kth-largest-element-in-an-array
*692 top-k-frequent-words
*794 swim-in-rising-water
378 kth-smallest-element-in-a-sorted-matrix <- easy level
347 top-k-frequent-elements
451 sort-characters-by-frequency
*761 employee-free-time <- the easiest
11 solved 0 failed 17 todo
```
`cd <number>` changes the current problem. Then `ls` shows the description.
```
#:/heap> cd 23
#:/heap/23-merge-k-sorted-lists> ls
[Linked-List, Heap, Divide-And-Conquer, 8/20]
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example:
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6
```
`pull` downloads the latest solution and sample test case from the online judge. If no solution was submitted, a boiler plate is used. The solution/boilerplate is saved in `./ws/<number>.<ext>` and can be edited.
```
#:/heap/23-merge-k-sorted-lists> pull
,___,
[O.o] Replace working copy? (y/N)
/)__)
-"--"-y
ws/23.py
```
`cat` show the sample test case. It is saved in `./ws/tests.dat`. Test cases can be added to it and be used by `check`.
```
#:/heap/23-merge-k-sorted-lists> cat
ws/23.py << [[1,4,5],[1,3,4],[2,6]]
```
Now that we have the problem description and the sample test case, start coding and test the solution locally.
```
$ vim ./ws/23.py
$ python ./ws/23.py
```
The default programming language is `Python`. To change it, use `chmod <language>`. Once the solution passes tests locally, we can `check` it with or `push` it to the online judge. `push` reports the runtime and number of tests passed.
```
#:/heap/23-merge-k-sorted-lists> check
Input: [[1,4,5],[1,3,4],[2,6]]
Result: [1,1,2,3,4,4,5,6]
Runtime: 20 ms
#:/heap/23-merge-k-sorted-lists> push
Runtime % ms
###############################################################################
** 0 48
***** 1 52
***************** 2 56
********************************************************************** 8 60
*********************************************************************** 8 64*
**************************************** 5 68
*********************************************** 6 72
*************************************************************** 7 76
************************************** 4 80
************************ 3 84
**************** 2 88
************** 2 92
************ 1 96
**************** 2 100
***************** 2 104
**************** 2 108
*********************** 3 112
******************************** 4 116
************************ 3 120
*********************** 3 124
*********************** 3 128
****************** 2 132
********** 1 136
********* 1 140
Rank: 20.51%
Result: 131/131 tests passed
Runtime: 64 ms
```
`/<keyword>` searches for problems matching a tag (`airbnb`) or a keyword (e.g. `palindrome`)
```
#:/heap/23-merge-k-sorted-lists> cd ..
#:/heap> cd ..
#:/> /airbnb
220 contains-duplicate-iii
68 text-justification
10 regular-expression-matching
x212 word-search-ii
269 alien-dictionary
*336 palindrome-pairs
2 add-two-numbers
23 merge-k-sorted-lists
*190 reverse-bits
*803 cheapest-flights-within-k-stops
227 basic-calculator-ii
160 intersection-of-two-linked-lists
*221 maximal-square
385 mini-parser
219 contains-duplicate-ii
20 valid-parentheses
*756 pour-water
42 trapping-rain-water
1 two-sum
198 house-robber
251 flatten-2d-vector
415 add-strings
202 happy-number
108 convert-sorted-array-to-binary-search-tree
*787 sliding-puzzle
*757 pyramid-transition-matrix
217 contains-duplicate
*752 ip-to-cidr
*761 employee-free-time
136 single-number
20 solved 1 failed 9 todo
#:/>
```
The solutions are saved in the `./ws/` directory.
`print` generates a syntax-highlighted [HTML](http://www.spiderman.ly/all.html).
Raw data
{
"_id": null,
"home_page": "https://github.com/chenpengcheng/cli",
"name": "leetcode-cli",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "leetcode",
"author": "Pengcheng Chen",
"author_email": "pengcheng.chen@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3d/2b/fdfc94251a2128b5f4475a81be9d0dd9942ba324c5e5ad60428b2d0286c0/leetcode-cli-0.1.0.tar.gz",
"platform": null,
"description": "# LeetCode CLI\n\nStart `tmux`, `vim` and `leetcode-cli`. Practice as many questions as you can:-)\n\nThis tool is not affiliated with [LeetCode](https://leetcode.com).\n\n## Install\n\n### Mac OS X\n\n```\nbrew install node\nsudo easy_install leetcode-cli\n```\n\n### Linux\n\n```\nsudo apt install nodejs\nsudo pip install leetcode-cli\n```\n\n## Usage\n\nThe most common commands are: `cd`, `ls`, `pull`, `cat`, `check`, `push`, `cheat`, `clear` and `/`.\n\n```\n$ leetcode-cli\n\n (\\_/)\n=(^.^)=\n(\")_(\")\n243 solved 17 failed 523 todo\n\n#:/> ?\ncat - Show test case(s).\ncd <tag|number> - Change problem(s).\ncheat <number> - Find the best solution.\ncheck - Test the solution.\nchmod <language> - Change programming language.\nclear - Clear screen.\nfind <keyword> - Find problems by keyword. Alias: /<keyword>.\nlimit <number> - Limit the number of problems.\nlogin - Login into the online judge.\nls - Show problem(s).\nprint [keyword] - Print problems by keyword in HTML.\npull [*] - Pull latest solution(s). '*': all solved problems.\npush - Submit the solution.\nsu <session> - Change session.\n\nA tag can refer to a topic (e.g. array) or a company (e.g. amazon).\nA keyword can be anything (including a tag).\nCommands and options can be completed via <TAB>.\n\n#:/>\n```\n\nControl+D to exit.\n\n## Demo\n\nAt the root (`/`) level. `ls` lists all the topics. `#` is for problems without a topic.\n\n```\n#:/> ls\n 29 #\n 81 array\n 28 backtracking <- 28 problems todo in backtracking\n 5 binary-indexed-tree\n 35 binary-search\n 12 binary-search-tree\n 26 bit-manipulation\n 3 brainteaser\n 31 breadth-first-search\n 60 depth-first-search\n...\n 13 sort\n 14 stack\n 62 string\n 3 topological-sort\n 53 tree\n 12 trie\n 21 two-pointers\n 9 union-find\n242 solved 18 failed 523 todo\n```\n\n`cd <topic>` changes the current topic.\n\n```\n#:/> cd heap\n#:/heap>\n```\n\nAt the topic level, `ls` lists the problems by difficulty level and acceptance rate. Levels are seperated by a blank line. At each level, the problems are listed in the order of acceptance rate.\nThe marks: `*` means `todo`, `x` `failed`, none means `solved`.\n\n```\n#:/heap> ls\n 355 design-twitter <- the hardest\n *719 find-k-th-smallest-pair-distance\n *836 race-car\n 23 merge-k-sorted-lists\n *218 the-skyline-problem\n *803 cheapest-flights-within-k-stops\n\n 295 find-median-from-data-stream <- medium level\n *895 shortest-path-to-get-all-keys\n 373 find-k-pairs-with-smallest-sums\n...\n 215 kth-largest-element-in-an-array\n *692 top-k-frequent-words\n *794 swim-in-rising-water\n\n 378 kth-smallest-element-in-a-sorted-matrix <- easy level\n 347 top-k-frequent-elements\n 451 sort-characters-by-frequency\n *761 employee-free-time <- the easiest\n11 solved 0 failed 17 todo\n```\n\n`cd <number>` changes the current problem. Then `ls` shows the description.\n\n```\n#:/heap> cd 23\n#:/heap/23-merge-k-sorted-lists> ls\n[Linked-List, Heap, Divide-And-Conquer, 8/20]\n\nMerge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.\nExample:\n\nInput:\n[\n 1->4->5,\n 1->3->4,\n 2->6\n]\nOutput: 1->1->2->3->4->4->5->6\n```\n\n`pull` downloads the latest solution and sample test case from the online judge. If no solution was submitted, a boiler plate is used. The solution/boilerplate is saved in `./ws/<number>.<ext>` and can be edited.\n\n```\n#:/heap/23-merge-k-sorted-lists> pull\n,___,\n[O.o] Replace working copy? (y/N)\n/)__)\n-\"--\"-y\nws/23.py\n```\n`cat` show the sample test case. It is saved in `./ws/tests.dat`. Test cases can be added to it and be used by `check`.\n\n```\n#:/heap/23-merge-k-sorted-lists> cat\nws/23.py << [[1,4,5],[1,3,4],[2,6]]\n```\n\nNow that we have the problem description and the sample test case, start coding and test the solution locally.\n\n```\n$ vim ./ws/23.py\n$ python ./ws/23.py\n```\n\nThe default programming language is `Python`. To change it, use `chmod <language>`. Once the solution passes tests locally, we can `check` it with or `push` it to the online judge. `push` reports the runtime and number of tests passed.\n\n```\n#:/heap/23-merge-k-sorted-lists> check\nInput: [[1,4,5],[1,3,4],[2,6]]\nResult: [1,1,2,3,4,4,5,6]\nRuntime: 20 ms\n\n#:/heap/23-merge-k-sorted-lists> push\nRuntime % ms\n###############################################################################\n** 0 48\n***** 1 52\n***************** 2 56\n********************************************************************** 8 60\n*********************************************************************** 8 64*\n**************************************** 5 68\n*********************************************** 6 72\n*************************************************************** 7 76\n************************************** 4 80\n************************ 3 84\n**************** 2 88\n************** 2 92\n************ 1 96\n**************** 2 100\n***************** 2 104\n**************** 2 108\n*********************** 3 112\n******************************** 4 116\n************************ 3 120\n*********************** 3 124\n*********************** 3 128\n****************** 2 132\n********** 1 136\n********* 1 140\nRank: 20.51%\nResult: 131/131 tests passed\nRuntime: 64 ms\n```\n\n`/<keyword>` searches for problems matching a tag (`airbnb`) or a keyword (e.g. `palindrome`)\n\n```\n#:/heap/23-merge-k-sorted-lists> cd ..\n#:/heap> cd ..\n#:/> /airbnb\n 220 contains-duplicate-iii\n 68 text-justification\n 10 regular-expression-matching\n x212 word-search-ii\n 269 alien-dictionary\n *336 palindrome-pairs\n 2 add-two-numbers\n 23 merge-k-sorted-lists\n *190 reverse-bits\n *803 cheapest-flights-within-k-stops\n\n 227 basic-calculator-ii\n 160 intersection-of-two-linked-lists\n *221 maximal-square\n 385 mini-parser\n 219 contains-duplicate-ii\n 20 valid-parentheses\n *756 pour-water\n 42 trapping-rain-water\n 1 two-sum\n 198 house-robber\n 251 flatten-2d-vector\n 415 add-strings\n 202 happy-number\n\n 108 convert-sorted-array-to-binary-search-tree\n *787 sliding-puzzle\n *757 pyramid-transition-matrix\n 217 contains-duplicate\n *752 ip-to-cidr\n *761 employee-free-time\n 136 single-number\n20 solved 1 failed 9 todo\n\n#:/>\n```\n\nThe solutions are saved in the `./ws/` directory.\n\n`print` generates a syntax-highlighted [HTML](http://www.spiderman.ly/all.html).\n",
"bugtrack_url": null,
"license": "",
"summary": "LeetCode CLI",
"version": "0.1.0",
"split_keywords": [
"leetcode"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d34fa783064b1a5668e2613df22e3181c3b196badb0f21b595b17f6775744281",
"md5": "14162d0a29205fea4f720344f8555481",
"sha256": "278f83890bd97294df227b9ccc5415ed5931644ef26b9ee21d5cc5a0b4411040"
},
"downloads": -1,
"filename": "leetcode_cli-0.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "14162d0a29205fea4f720344f8555481",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 13773,
"upload_time": "2023-04-10T08:23:56",
"upload_time_iso_8601": "2023-04-10T08:23:56.965543Z",
"url": "https://files.pythonhosted.org/packages/d3/4f/a783064b1a5668e2613df22e3181c3b196badb0f21b595b17f6775744281/leetcode_cli-0.1.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d2bfdfc94251a2128b5f4475a81be9d0dd9942ba324c5e5ad60428b2d0286c0",
"md5": "7a42abfeb9b75477df27fbd2a90e5c65",
"sha256": "4dffecaf23af8c0ed15a58c6a214fc85d218d42c6d8203ce41a2bc7db9e995e2"
},
"downloads": -1,
"filename": "leetcode-cli-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "7a42abfeb9b75477df27fbd2a90e5c65",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13636,
"upload_time": "2023-04-10T08:23:58",
"upload_time_iso_8601": "2023-04-10T08:23:58.904468Z",
"url": "https://files.pythonhosted.org/packages/3d/2b/fdfc94251a2128b5f4475a81be9d0dd9942ba324c5e5ad60428b2d0286c0/leetcode-cli-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-10 08:23:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "chenpengcheng",
"github_project": "cli",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "leetcode-cli"
}