Skip to content

leetcode-tools/leetcode-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

leetcode-cli

npm version license Build

A cli tool to enjoy leetcode!

Great thanks to leetcode.com, an really awesome website!

Table of Contents

Prerequisites

node.js (npm included), please follow the installation guide below:

Install

From npm repo:

$ sudo npm install -g leetcode-cli

From source code:

$ git clone http://github.com/skygragon/leetcode-cli
$ cd leetcode-cli && npm install && sudo npm install -g .

Best Practice

Read help first						$ lc help
Login with your leetcoe account		$ lc user -l
Browse all problems					$ lc list
Select one problem 					$ lc show 1 -g -l cpp
Coding it!
Run test(s) and pray				$ lc test ./two-sum.cpp -t '[3,2,4]\n7'
Submit final solution!				$ lc submit ./two-sum.cpp

Commands

help

list [keyword]     list problems
show <keyword>     show problem by name or index
submit <filename>  submit final solution to leetcode
test <filename>    send solution to leetcode and run test
user               login/logout with leetcode account
version            show version info
  • lc help <command> to see help on sub command.
  • lc <command> --help also works.

list

Navigate all the problems. The heading means you have AC-ed the problem.

$ lc list

  [385] Mini Parser                                                  Medium (26.5%)
✘ [384] Shuffle an Array                                             Medium (45.7%)
✔ [383] Ransom Note                                                  Easy   (44.5%)
✔ [382] Linked List Random Node                                      Medium (46.6%)
......
✔ [  4] Median of Two Sorted Arrays                                  Hard   (19.6%)
✔ [  3] Longest Substring Without Repeating Characters               Medium (22.9%)
✔ [  2] Add Two Numbers                                              Medium (24.5%)
✔ [  1] Two Sum                                                      Easy   (25.6%)
  • -q to filter by query conditions.
    • e = easy, E = m + h.
    • m = medium, M = e + h.
    • h = hard, H = e + m.
    • d = done = AC-ed, D = not AC-ed.
    • l = locked, L = not locked.
  • -s to show statistic counters.
  • lc list <keyword> to search by keyword.

Example

$ lc list -q Dml array
  🔒 [360] Sort Transformed Array                                       Medium (41.0%)
  🔒 [325] Maximum Size Subarray Sum Equals k                           Medium (40.9%)

show

Select a problem to fight. With -g+-l, the code template could be auto generated for you.

$ lc show 1 -g -l cpp

[1] Two Sum    	(File: two-sum.cpp)

https://leetcode.com/problems/two-sum/

* Easy (25.6%)
* Total Accepted: 274880
* Total Submissions: 1074257

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
  • -g to generate source file.
  • -l to choose programming language. (Depends on which langs are provided on leetcode)
    • c
    • cpp
    • csharp
    • golang
    • java
    • javascript
    • python
    • ruby
    • swift
  • Instead of index number, you can use name to select a problem.
    • lc show "Two Sum"
    • lc show two-sum

submit

$ lc submit ./two-sum.cpp
	✔ Accepted
	✔ 16/16 cases passed (12 ms)

test

Customize your testcase and run it against leetcode.

$ lc test ./two-sum.cpp -t '[3,2,4]\n7'

Input data:
[3,2,4]
7

Your
	✔ runtime: 0 ms
	✘ answer: [1,2]
	✔ output:

Expected
	✔ runtime: 0 ms
	✔ answer: [0,2]
	✔ output:
  • -t to provide test case in command line.
  • -i to provide test case in interactive mode.

user

Login with your leetcode account (username or email).

$ lc user -l
login: <account>
pass:
Successfully login as <account>
  • -l to login
  • -L to logout.
  • -s to show user statistics.
  • lc user to show current account.

Eaxmple

$ lc user -s
You are now login as skygragon

Easy      72/95  (75.79%)      	[+++++++++++++++++++++++.......]
Medium    97/194 (50.00%)      	[+++++++++++++++...............]
Hard      27/82  (32.93%)      	[++++++++++....................]

version

$ lc version
0.3.0
  • -v to show verbose info, e.g. config, cache dir.

Example

$ lc version -v
leetcode-cli 0.3.0

Cache: /Users/skygragon/.lc/
Config: /Users/skygragon/.lcconfig

BASE_URL = https://leetcode.com
LOGIN_URL = https://leetcode.com/accounts/login/
PROBLEMS_URL = https://leetcode.com/problems/
TEST_URL = https://leetcode.com/problems/$key/interpret_solution/
SUBMIT_URL = https://leetcode.com/problems/$key/submit/
VERIFY_URL = https://leetcode.com/submissions/detail/$id/check/
LANG = cpp
USE_COLOR = true

Tips

Bash Completion

Copy .lc-completion.bash to your home directory, and source it in .bashrc (Linux) or .bash_profile (MacOS).

$ cp .lc-completion.bash ~
$ echo "source ~/.lc-completion.bash" >> ~/.bashrc
$ source ~/.bashrc

$ lc list --<tab>
--help     --keyword  --query    --stat

Colorful Output

  • --color to enable color.
  • --no-color to disable it.

Or use configuration setting, see below.

Configuration

Create a file named .lcconfig in your home directory.

Example

{
	"LANG": "java",
	"USE_COLOR": true
}

About

A cli tool to enjoy leetcode!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.6%
  • Other 1.4%