Partially open sourced content from my book series, The Comprehensive Coding Interview Guide. Currently two parts and will be hopefully published as two books:
- Learning: Data Structures and Algorithms Explained with LeetCode Problems
- Cracking: The LeetCode Problem Catalog
The book series uses Python 3 as programming language, and LeetCode Problems as examples. The advantages of doing so are obvious:
(1) Python is becoming the most popular language in the age of AI, and there are not many interview guide books using Python.
(2) Using LeetCode Problems because first they are real coding interview questions; second, with the online judge system, it is easier for learners to practice online and with the support of the community, it makes the learning process more fun.
My purpose here is to offer any person who is interested with getting hands dirty with algorithms and coding a practical and strict manual to guide them through this process. The content is supposed to not only be correct (i.e. , the code and algorithms work) and catchy but also discreet (i.e , to know why it works, when it works, and how it works but not as theoretical as the Introduction to Algorithms).
As the first part of the series, this part includes:
- Introduction,
- Fundamental Algorithm Design and Analysis (divide and conquer, complexity analysis),
- Data Structures (connect the doubts of data structures and Python built-in data types/Modules),
- Complete Search (searching on linear data structres, graph, tree),
- Advanced Algorithm Design (Dynamic programming, greedy algorithm),
- Math and Bit Manipulation
LeetCode problems as used as exercise, only id and the title of the questions are given.
The Second part of the series focusing on catagorize problems and solve them type by type.
- Dynamic Programming Questions (15%)
- Array Questions (15%)
- Linked List, Stack, Queue, and Heap Questions (12%)
- String Questions (15%)
- Tree Questions (10%)
- Graph Questions (15%)
If you like the example chapters that I put here, please leave your comment here. This book comes with a lot of hard work --personally, I paused my PhD program for a semester to focus on. Therefore, your comment is important to lead to the publication of the work.
If you have ideas to improve the book, about formatting, more contents, or correct the errors are also very welcome too.
If you are excellent with algorithms, or top leaders on the LeetCode Weekly contest, or made in the ACM ICPC contest, and are interested into helping and potentially coauthor on some parts of the book, please do not hesitate to contact me.