Open-source project
youngyangyang04/leetcode-master avatar
youngyangyang04/leetcode-master

leetcode-master: a pre-ordered LeetCode curriculum in Markdown, not a tool

《代码随想录》LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫!🔥🔥 来看看,你会发现相见恨晚!🚀

62,490 stars12,302 forksShellLicense varies

At a glance

What is it?
youngyangyang04/leetcode-master is a Chinese-language study repository that sequences roughly 200 classic problems into a module-by-module path, with C++ as the reference language and community translations in Java, Python, Go and JavaScript. It is a curriculum you read and clone, not software you install or run.
Who is it for?
Adopt it if you want a fixed sequence of interview-classic problems and are willing to read Chinese C++ explanations, or want the multi-language code files as reference implementations. Skip it if you need English prose, an automated judge, or an API to plug into a training pipeline, since the repository is a document tree, not a service.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 44 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What this repository actually is

Most entries under the LeetCode topic are code collections: a folder of accepted solutions, one file per problem, sorted by number. This repository inverts that. The README itself is the curriculum. It states that the reading order has been arranged by knowledge thread and difficulty, and that each problem carries an illustrated explanation plus a video walkthrough. The unit of content is a Markdown article under problems/, and the README is the table of contents that links to those articles.

The primary language field says Shell, which is misleading if you read it as the language of the solutions. The README is explicit that the explanations are written mainly in C++, with Java, Python, Go and JavaScript implementations contributed by the community. The Shell label reflects repository tooling, not the content. Anyone evaluating this as a codebase will be looking at the wrong thing.

The intended reader is a candidate preparing for technical interviews in the Chinese market, or a learner who wants a defined route through data structures and algorithms instead of picking problems at random. The README frames the value proposition as not having to search for problems yourself: follow the order and the coverage is handled.

The module ordering and the theory-practice-summary loop

The README lists modules in a fixed sequence: arrays, linked lists, hash tables, strings, two pointers, stacks and queues, binary trees, and onward toward backtracking, greedy, dynamic programming and graph theory. Each module opens with a theory article, for example problems/数组理论基础.md for arrays and problems/链表理论基础.md for linked lists, then lists numbered problems, and closes with a summary article such as problems/数组总结篇.md.

That three-part shape is the actual mechanism. A learner reads the theory file, works the numbered problems in the given order, then reads the summary to consolidate. The README states this directly: read the theory first, then the problem list, then the summary to close the loop.

The ordering is not strictly by LeetCode problem number, and that is deliberate. In the arrays module, 704 binary search comes before 27 remove element, which comes before 977 squares of a sorted array and 209 minimum size subarray sum. Several entries are not LeetCode problems at all but Kamacoder exercises (区间和, 开发商购买土地, 替换数字, 右旋字符串), which suggests the author wanted problems that isolate a specific technique without LeetCode's framing.

The two pointers module is worth noting because it does not introduce new problems. It re-lists items already covered in arrays, strings and linked lists, and adds 15 three sum and 18 four sum. That is a deliberate cross-cutting pass rather than a new topic, and it tells you the curriculum expects you to revisit material under a different lens rather than move linearly forward.

Getting the material onto your machine

There is nothing to install. The content is Markdown, so the workflow is a clone and a reader. The repository is at github.com/youngyangyang04/leetcode-master on the master branch, with a Gitee mirror at gitee.com/programmercarl/leetcode-master for users who prefer that host.

git clone https://github.com/youngyangyang04/leetcode-master.git

After cloning, the entry point is README.md at the repository root. The problem articles live under problems/, with subdirectories such as problems/前序/ for the complexity-analysis pieces and problems/kamacoder/ for the Kamacoder exercises. The README uses collapsible details blocks per module, so on GitHub the table of contents renders collapsed and you expand a module to see its list.

There is no build step, no package manifest, no test runner and no configuration file. If you want to read the material as rendered HTML rather than raw Markdown, the README points to programmercarl.com for the Chinese online edition and keetcoder.com for an English edition, with a separate repository at github.com/youngyangyang04/keetcoder. The README also links a PDF compilation at programmercarl.com/qita/algo_pdf.html and a video series on Bilibili. Those are external destinations, not part of the clone.

If your goal is to run the solutions, you copy the code block for your language out of the relevant Markdown file into your own editor and submit it on LeetCode. The repository does not provide a harness for that.

Language coverage is uneven by design

The README is candid that C++ is the main line and other languages are community contributions. Practically, that means the prose explanation, the diagrams and the reasoning steps are written around C++ code. A Java or Python reader can follow the reasoning, but the code they see first will not be in their language, and the multi-language versions may lag behind the C++ version for any given problem.

For someone whose interview will be conducted in Go or JavaScript, this is a real friction point. The algorithmic idea transfers, but idiomatic details do not: slice handling in Go, array methods in JavaScript, and the standard-library containers each language expects you to reach for differ from the C++ presentation. You will be translating, not copying.

The upside is that the C++ framing is consistent across the whole curriculum. Because one author set the reference implementation, the explanations do not drift in style or depth between modules the way a multi-author collection often does. The trade-off is that you are reading a single person's mental model of each problem rather than a survey of approaches.

Where this repository stops being the right tool

It is a reading curriculum, not a practice system. There is no spaced repetition, no progress tracking, no test harness and no difficulty calibration beyond the author's ordering. If you want a system that schedules review of problems you got wrong, this gives you none of that; you would need to track it yourself or use a separate tool.

Language is the sharper limitation. The README, the module titles, the theory articles and the summaries are in Chinese. An English-only reader can still use the code blocks and the problem links, but the actual teaching content, which is the point of the repository, is not accessible without reading Chinese. The English edition exists at keetcoder.com and in a separate repository, but the README does not describe how complete that translation is or how it is kept in sync with the Chinese original.

There is also no retrieved release information. The repository shows no releases, and the last push timestamp is the only maintenance signal available. That is not evidence of abandonment, but it does mean you cannot point to a versioned snapshot. If you are citing or pinning the material, you are pinning a commit, not a release.

The licence is listed as unknown, and the README states that all content is original and that reproduction requires attribution, with a warning about unauthorized copying. Without a recognised licence file, the terms under which you may reuse the text or code are not stated in a standard form. This is a practical constraint if you intend to republish, translate or embed the material in another product. It is not legal advice, and if reuse matters to you, the terms should be clarified with the author rather than assumed.

How it compares to a problem-list approach

The obvious alternative is to work from a curated problem list, such as a company-tagged set or a community-maintained sheet, and pull explanations from whatever source you find per problem. That approach optimises for coverage and for matching a specific employer's question pool. Its weakness is consistency: each explanation comes from a different author with a different level of detail, and the ordering is usually by frequency or by tag rather than by dependency between techniques.

This repository optimises for the opposite. The ordering is pedagogical, the explanations share one voice, and each module has an explicit theory article that the problem list builds on. The cost is that coverage is fixed at roughly the 200 problems the author selected, and the selection is tuned to the Chinese interview market rather than to any specific company's tag set. If your target interviews lean on problems outside that selection, you will need a second source anyway.

A third option is a structured course with an automated judge. Those give you immediate feedback and progress tracking, which this repository does not. What they typically do not give you is the raw Markdown files sitting in your own clone, editable and diffable, which is what you get here.

Maintenance, contribution and what to check before relying on it

The README describes the repository as open to contribution, with a linked guide at programmercarl.com/qita/join.html explaining how to submit code, and a contributors graph linked from the badge block. That is the mechanism by which the non-C++ language versions grow: community pull requests against a C++-anchored original. The practical consequence is that any given language's coverage is a function of who has contributed, and the README does not claim parity across languages.

Because there are no releases, there is no changelog to read for breaking changes. The material is prose and code samples, so breakage is unlikely in the software sense, but LeetCode problem statements do change, and a Markdown file that quotes a problem's constraints can drift out of date without any version signal. The only maintenance indicator in the repository is the last push timestamp.

Before you build a study plan on it, verify three things. First, open a theory file and a problem file in your browser to confirm the rendering and the language mix work for you. Second, check whether a LICENSE file exists in the repository root, since the licence field is unknown and the README asserts original authorship. Third, check the English edition's coverage if you cannot read Chinese, because the Chinese original is where the teaching content lives.

Editorial conclusion

Adopt it if you want a fixed sequence of interview-classic problems and are willing to read Chinese C++ explanations, or want the multi-language code files as reference implementations. Skip it if you need English prose, an automated judge, or an API to plug into a training pipeline, since the repository is a document tree, not a service. Before committing, open problems/数组理论基础.md and one problem file such as problems/0704.二分查找.md in the browser to confirm the layout and language mix suit you, and check the repository for a LICENSE file before republishing anything from it.

Official sources

  1. Issues
  2. README
  3. youngyangyang04/leetcode-master on GitHub
Community notes

Community notes