# LeetCode

[简体中文](./README.md) | English

---

## Introduction

![leetcode.jpeg](./assets/leetcode.jpeg)

LeetCode Solutions: A Record of My Problem Solving Journey.

This repository will be divided into four parts for now:

- The first part is the solutions to some classic problems on LeetCode, including the idea thinkings, key points and code implementations.

- The second part is the summary of data structures and algorithms.

- The third part is [Anki flashcards](https://apps.ankiweb.net) that record the LeetCode problems in a certain way so as to make it easier to remember.

- The fourth part is future plans on content that would be introduced into the above parts.

> Only when having mastered the basic data structures and algorithms can you solve complex problems easily.



## Usage Instructions

- For the parts that were added recently, there will be a 🆕 behind.
- For the parts that were updated recently, there will be a 🖊 behind.
- Here will be the place to update Anki Flashcards in the future as well.
- Here is a mind mapping graph showing the summary of categorizations of problems that are questioned frequently in interviews. We could analyze according to the information in the graph.

![leetcode-zhihu](./assets//leetcode-zhihu.jpg)

(Picture credited by [LeetCode-cn](https://www.zhihu.com/question/24964987/answer/586425979).)

The algorithms mainly includes:

- Basic skills: Divide-and-Conquer; Binary; Greedy
- Sorting algorithms: Quicksort; Merge Sort; Counting Sort
- Searching algorithms: Backtracking; Recursion; Depth-First-Search (DFS); Breath-First-Search (BFS); Binary Search Tree; etc.
- Graph theory: Shortest Path Problem; Minimal Spanning Tree
- Dynamic Programming: Knapsack Problem; Longest Common Subsequence (LCS) Problem

The data structures mainly includes:

- Array and linked list: Singly/Doubly-Linked List
- Stack and queue
- Hash table
- Heap: Min-Max Heap
- Tree and Graph: Lowest Common Ancestor (LCA); Disjoint-Set
- String: Prefix Tree (Trie); Suffix Tree



## Previews

[0042.trapping-rain-water](./problems/42.trapping-rain-water.md):

![0042.trapping-rain-water](./assets/problems/42.trapping-rain-water-1.png)

[Stack in Browser](./thinkings/basic-data-structure.md)：

![basic-data-structure-call-stack](./assets/thinkings/basic-data-structure-call-stack.png)

[backtrack problems](./problems/90.subsets-ii.md):

![backtrack](./assets/problems/backtrack.png)

[0198.house-robber](./problems/198.house-robber.md):

![198.house-robber](./assets/problems/198.house-robber.png)

[0454.4-sum-ii](./problems/454.4-sum-ii.md):

![454.4-sum-ii](./assets/problems/454.4-sum-ii.png)



## Top Problems Progress

- [Top 100 Linked Questions](https://leetcode.com/problemset/top-100-liked-questions/) (44 / 100)

- [Top Interview Questions](https://leetcode.com/problemset/top-interview-questions/) (64 / 145)



## Portals

### Solutions to LeetCode Classic Problems

> Here only lists some representative problems but not all.

#### Easy

- [0020.Valid Parentheses](./problems/20.validParentheses.md)
- [0026.remove-duplicates-from-sorted-array](./problems/26.remove-duplicates-from-sorted-array.md)
- [0088.merge-sorted-array](./problems/88.merge-sorted-array.md)
- [0121.best-time-to-buy-and-sell-stock](./problems/121.best-time-to-buy-and-sell-stock.md) 🆕
- [0122.best-time-to-buy-and-sell-stock-ii](./problems/122.best-time-to-buy-and-sell-stock-ii.md) 🆕
- [0136.single-number](./problems/136.single-number.md)
- [0167.two-sum-ii-input-array-is-sorted](./problems/167.two-sum-ii-input-array-is-sorted.md)
- [0169.majority-element](./problems/169.majority-element.md)
- [0190.reverse-bits](./problems/190.reverse-bits.md)
- [0191.number-of-1-bits](./problems/191.number-of-1-bits.md)
- [0198.house-robber](./problems/198.house-robber.md) 🆕
- [0203.remove-linked-list-elements](./problems/203.remove-linked-list-elements.md)
- [0206.reverse-linked-list](./problems/206.reverse-linked-list.md)
- [0219.contains-duplicate-ii](./problems/219.contains-duplicate-ii.md)
- [0226.invert-binary-tree](./problems/226.invert-binary-tree.md)
- [0283.move-zeroes](./problems/283.move-zeroes.md)
- [0349.intersection-of-two-arrays](./problems/349.intersection-of-two-arrays.md)


#### Medium

- [0002. Add Two Numbers](./problems/2.addTwoNumbers.md)
- [0003. Longest Substring Without Repeating Characters](./problems/3.longestSubstringWithoutRepeatingCharacters.md)
- [0011.container-with-most-water](./problems/11.container-with-most-water.md)
- [0015.3-sum](./problems/15.3-sum.md) 🆕
- [0019. Remove Nth Node From End of List](./problems/19.removeNthNodeFromEndofList.md)
- [0024. Swap Nodes In Pairs](./problems/24.swapNodesInPairs.md)
- [0039.combination-sum](./problems/39.combination-sum.md)
- [0040.combination-sum-ii](./problems/40.combination-sum-ii.md)
- [0046.permutations](./problems/46.permutations.md)
- [0047.permutations-ii](./problems/47.permutations-ii.md)
- [0055.jump-game](./problems/55.jump-game.md) 🆕 
- [0062.unique-paths](./problems/62.unique-paths.md )🆕 
- [0075.sort-colors](./problems/75.sort-colors.md)
- [0078.subsets](./problems/78.subsets.md) 
- [0086.partition-list](./problems/86.partition-list.md)
- [0090.subsets-ii](./problems/90.subsets-ii.md)
- [0091.decode-ways](./problems/91.decode-ways.md) 🆕 
- [0092.reverse-linked-list-ii](./problems/92.reverse-linked-list-ii.md)
- [0094.binary-tree-inorder-traversal](./problems/94.binary-tree-inorder-traversal.md)
- [0102.binary-tree-level-order-traversal](./problems/102.binary-tree-level-order-traversal.md)
- [0103.binary-tree-zigzag-level-order-traversal](./problems/103.binary-tree-zigzag-level-order-traversal.md)
- [0139.word-break](./problems/139.word-breakmd)
- [0144.binary-tree-preorder-traversal](./problems/144.binary-tree-preorder-traversal.md)
- [0150.evaluate-reverse-polish-notation](./problems/150.evaluate-reverse-polish-notation.md) 🖊
- [0152.maximum-product-subarray](./problems/152.maximum-product-subarray.md) 🆕  
- [0199.binary-tree-right-side-view](./problems/199.binary-tree-right-side-view.md)
- [0201.bitwise-and-of-numbers-range](./problems/201.bitwise-and-of-numbers-range.md)
- [0208.implement-trie-prefix-tree](./problems/208.implement-trie-prefix-tree.md)
- [0209.minimum-size-subarray-sum](./problems/209.minimum-size-subarray-sum.md) 🖊 
- [0236.lowest-common-ancestor-of-a-binary-tree](./problems/236.lowest-common-ancestor-of-a-binary-tree.md)
- [0238.product-of-array-except-self](./problems/238.product-of-array-except-self.md) 🆕 
- [0240.search-a-2-d-matrix-ii](./problems/240.search-a-2-d-matrix-ii.md)
- [0279.perfect-squares](./problems/279.perfect-squares.md)
- [0309.best-time-to-buy-and-sell-stock-with-cooldown](./problems/309.best-time-to-buy-and-sell-stock-with-cooldown.md) 🆕 
- [0322.coin-change](./problems/322.coin-change.md)
- [0328.odd-even-linked-list](./problems/328.odd-even-linked-list.md)
- [0334.increasing-triplet-subsequence](./problems/334.increasing-triplet-subsequence.md)
- [0365.water-and-jug-problem](./problems/365.water-and-jug-problem.md) 🆕 
- [0416.partition-equal-subset-sum](./problems/416.partition-equal-subset-sum.md)
- [0445.add-two-numbers-ii](./problems/445.add-two-numbers-ii.md)
- [0454.4-sum-ii](./problems/454.4-sum-ii.md) 🆕
- [0494.target-sum](./problems/494.target-sum.md)
- [0518.coin-change-2](./problems/518.coin-change-2.md)
- [0609.find-duplicate-file-in-system](./problems/609.find-duplicate-file-in-system.md) 🆕
- [0875.koko-eating-bananas](./problems/875.koko-eating-bananas.md)
- [0877.stone-game](./problems/877.stone-game.md)
- [0887.super-egg-drop](./problems/887.super-egg-drop.md)
- [0900.rle-iterator](./problems/900.rle-iterator.md)

#### Hard
- [0023.merge-k-sorted-lists](./problems/23.merge-k-sorted-lists.md)
- [0042.trapping-rain-water](./problems/42.trapping-rain-water.md)
- [0128.longest-consecutive-sequence](./problems/128.longest-consecutive-sequence.md) 🆕 
- [0145.binary-tree-postorder-traversal](./problems/145.binary-tree-postorder-traversal.md)
- [0146.lru-cache](./problems/146.lru-cache.md)
- [0239.sliding-window-maximum](./problems/239.sliding-window-maximum.md)
- [0295.find-median-from-data-stream](./problems/295.find-median-from-data-stream.md) 🆕 
- [0301.remove-invalid-parentheses](./problems/301.remove-invalid-parentheses.md)



### Summary of Data Structures and Algorithms

- 🖊 [Data Structure](./thinkings/basic-data-structure.md) (Drafts)
- 🖊 [Binary Tree Traversal](./thinkings/binary-tree-traversal.md)
- [Dynamic Programming](./thinkings/dynamic-programming.md)
- [Huffman Encode and Run Length Encode](./thinkings/run-length-encode-and-huffman-encode.md)
- [Bloom Filter](./thinkings/bloom-filter.md)



### Anki Flashcards

Anki falshcards would be mainly two parts: the mappings from key points to problems; the mappings from problems to idea thinks, key points and code implementations.

All flashcards are put in [anki-card](./assets/anki/leetcode.apkg).

> Please check [here](https://apps.ankiweb.net/) for more about the usage of Anki.

Latest updated flashcards (only lists the front page):

- What is the key point of the binary search algorithm? Related problems?
- How to simplify the operations using the features of stacks? Related problems?
- The thinkings and related problems of double-pointers problems?
- The thinkings and related problems of sliding window problems?
- The thinkings and related problems of backtracking?



### Future Plans

- [Complete Anki Flashcards](./assets/anki/)

- [Collection of String Problem](./todo/str/)



## Community Chat Groups

We're still on the early stage, so feedback from community is very welcome. For sake of reducing the costs of communication, I created some chat groups.

### Telegram

[http://t.me/leetcode_intl](http://t.me/leetcode_intl)

### QQ (For China Region)

![qq-group-chat](./assets/qq-group-chat.png)

### WeChat (For China Region)

![wechat-group-chat](./assets/wechat-group-chat.jpeg)

(Add this bot and reply "leetcode" to join the group.)



## Contribution

- If you have any ideas, [Issues](https://github.com/azl397985856/leetcode/issues) or chat in groups.
- If you want to commit to the repository, Pull Request is welcome.
- If you want to edit images resources in this project, [here](./assets/drawio/) lists the files that can be edited on [draw.io](https://www.draw.io/).
