We will follow the following order when we practice with Leetcode
- Arrays
- Strings
- Hash table
- Stack
- Queue
- Linked list
- Binary Search
- BFS
- DFS
- Tree
- Graph
- Math
- Bit manipulation
- Recursion
- Sort
- Heap
- Divide and conquer
- Union find
- Dynamic programming
- Greedy
- Backtracking
As you can see, we will try to focus on data structures first and then algorithms
since I personally think that data structure are the fundamental for learning more
advanced algorithms as algorithms are implemented with basic data structures. However,
you will find a lot intersections between data structure and algorithms. For example,
in order to solve an array problem, you might have to use the knowledge of binary
search. Therefore, I will try to not include questions that rely on knowledge about
topics that we have not covered yet. However, I will keep a note on my end to make
sure that we re-visit those problems after we cover the topics. After we visit every
topic, all the dots will be connected.
There are some topics that I didn’t include in above list because they have less frequencies
though they are equally important as those problems with higher frequencies. For
example: Trie, Segment tree, Ordered map and etc. I will still cover these topics
at the time when I think I am ready.
I will create a folder(category) and also tag for each of the topics. You can either
browse by category, tag or simply search in the search box.